2013-04-06 77 views
0

我使用國防部重寫重寫URL的一部分查詢參數國防部重寫大寫增加了查詢字符串

網址形式

http://www.my_site.com/ABC 

其中ABC是位強行進入在一個子目錄

.htaccess的查詢參數我index.php有以下幾點:

RewriteEngine on 
RewriteRule ^/?([a-zA-Z0-9]+)/?$ directory/index.php?Site=$1 [L] 

當我有一個小寫的ABC e.g:

my_site.com/abc 

瀏覽器的URL保持不變,並在頁面完美的作品與ABC在GET傳遞。

然而,當ABC是大寫e.g:

my_site.com/ABC 

在瀏覽器的URL變爲:

my_site.com/ABC/?Site=ABC 

它的工作原理確定,農行仍處於GET參數,但它看起來醜陋!

爲什麼情況會影響這個,我可以讓大小寫保持原始URL嗎?

進一步說明:我嘗試了一個不同的服務器的例子,它的工作完美!任何想法,如果有服務器設置可能會影響這一點?

感謝您的任何援助

+0

你試過改寫爲'/directory/index.php?Site = $ 1'而不是'directory/index.php?Site = $ 1'嗎? – sidoh 2013-04-06 17:27:34

+0

沒有影響。我還有一個瀏覽器網址,看起來像mysite/ABC /?Site = ABC – Nimur 2013-04-06 17:46:53

+0

您是否驗證過這是實際運行的規則?嘗試對其進行評論並驗證是否有變化。 – sidoh 2013-04-06 18:22:52

回答

-1

你的意思是,[NC] NOCASE標誌?這將使規則以不區分大小寫的方式進行匹配。意思是,它不會在意字母是大寫還是小寫。

RewriteRule ^([a-zA-Z0-9]+)/?$ /directory/index.php?Site=$1 [NC] 

我想,你想重寫一個URL,/bigSMALL/directory/index.php?Site=BIGsmall?如果我是對的,那麼問題出現在程序中,而不是URL重映射。但是,在MySQL數據庫中,當您獲取用於查詢WHERE值的查詢字符串的值時,它在大小寫不敏感的情況下匹配。看看圖片:

username = 'nAmE is case-insensitive'

你開發一個網站?如果有的話,那麼你使用的是什麼DBMS?也許,MySQL

+0

我認爲這不重要,因爲正則表達式不區分大小寫,對吧? – sidoh 2013-04-06 18:22:12

+0

@sidoh如果你想將_/bigSMALL_這樣的URL改寫成_/directory/index.php?Site = BIGsmall_,那麼問題出在程序中。檢查我的更新! – 5ervant 2013-04-06 19:25:39

+0

否 - 純粹是在mod_rewrite完成後在瀏覽器中顯示的URL中的區別 - 如果它的ABC我得到/?site = ABC如果我使用abc我沒有在URL中獲取任何查詢 - 但都傳遞GET變量完美。 – Nimur 2013-04-07 16:28:41

0

我已經解決了 - 正如sidoh說別的事情正在發生。

如果我的服務器上有一個與參數名稱相同的目錄,則mod_rewrite將查詢添加到URL中。

例如 如果我在服務器上有一個目錄ABC,那麼使用帶有www.domain.com/ABC的我的mod_rewrite會導致瀏覽器URL www.domain.com/ABC/Site=ABC - 如果沒有目錄ABC全部都可以,並且URL仍然是www.domain.com/ABC(這是我想要的)。

因爲我在Linux上ABC與abc不同 - 它解釋了行爲的明顯區分大小寫的本質。

感謝所有的投入。