2016-07-06 360 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

從我的意見來看,是的,哥們! :) –