2016-07-06 368 views
2

在我的CMS中,我已经在PHP代码中进行了风格改编。区分大小写区分大小写还是全大写?

<img src="/var/thumbs<?= $next_page_url ?>.JPG" height="50" alt="Next"> 

主要有以下几种现象:

如果文件名既有大写和小写字母(PIC123a.jpg),这是行不通的。如果文件名只有大写字母(PIC123.JPG)或者只有小写字母(pic-test.jpg),它就起作用了。

如果我使用.htaccess中的条目,它也可以混合使用大写和小写字母。

<IfModule mod_speling.c> 
    CheckCaseOnly On 
    CheckSpelling On 
</IfModule> 

但我想知道为什么它不会没有这些.htaccess条目只有大写或小写只工作,分别。

PS:CMS只有变量$next_page_url,而不是$next_page_item。我不想做太多的PHP黑客攻击。

---编辑---更多的相关信息---

没有htaccess的条目:

如果文件扩展名大写和文件名大写(PIC123.JPG)=它的工作原理

如果文件扩展名为小写和文件名中的小写(PIC-test.jpg放在)=它的工作原理

如果文件扩展名为小写和文件名称大写(PIC123.jpg)=没有工作

+0

[阅读此篇](http://stackoverflow.com/questions/16579652/htaccess-case-sensitive-and-mod-rewrite) – Martin

+0

@Martin使用短回波标记'<?= '。即使短标签被禁用('<?'),短回显仍然被启用。如果在'='之后有一个空格,它也不会。这不会产生任何影响,因为php代码中的空格和变量,字符串等被忽略。 –

+0

我已插入[QSA,L,NC],但没有成功。 PHP的short_tag已启用。没有问题。 – simfu

回答

2

每当你点击一个url时,这意味着你正在打apache或nginx之类的服务器。 PHP本身不是服务器。它只是处理请求btu这些请求首先由web服务器处理,如apache或nginx

CheckSpelling操作使得Apache执行更复杂的工作来查找匹配,例如,纠正常见的拼写错误

所以这就是为什么这个块的代码是用来做任务

<IfModule mod_speling.c> 
    CheckCaseOnly On 
    CheckSpelling On 
</IfModule> 

明白了吗? :)

快乐codding!

+0

http://httpd.apache.org/docs/1.3/mod/mod_speling.html 你想让我说什么?那是太暴力了吗? – simfu

+0

从我的意见来看,是的,哥们! :) –