2012-02-20 63 views
0

我想寫一個重寫規則,但我有一些轉發查詢字符串的嚴重問題。 我也試過[QSA]國旗,但它沒有奏效。轉發與重寫規則的查詢字符串

按照正確的請求:

/localhost/registry/registry.php?id=something&password=somethingelse&uri=whatever 

而且我會變成這樣的事情:用同一職位查詢

/localhost/registry/register 

(ID =東西&密碼= somethingelse & URI =什麼) 。 在這一點上,我的.htaccess將修改下面的一個上述要求:

/localhost/registry/registry.php?request=register&id=something&password=somethingelse&uri=whatever 

於是,我試着在我的.htaccess以下重寫規則:

RewriteRule ^register$ http://localhost/registry/registry.php?request=$0&$1 [QSA] 

但是,在最後'&',沒有任何顯示,$ 1變量是空的。 我必須寫什麼樣的重寫規則?

在此先感謝。

!!!解決方案

RewriteRule ^register$ /registry/registry.php?request=$0 [QSA] 

回答

1
RewriteRule ^register$ /registry/registry.php?request=$0 [QSA] 

如果你去http://localhost/registry/register?id=1,那麼查詢字符串將是(從PHP):

array(2) { 
    ["request"]=> 
    string(8) "register" 
    ["id"]=> 
    string(1) "1" 
} 
+0

它不工作。 返回的HTTP狀態是400 如果我添加重寫規則是這樣的: >重寫規則^寄存器$ HTTP://localhost/registry/registry.php [QSA] 請求(初始POST請求)是使用302 http狀態重定向,但以下請求(http://localhost/registry/registry.php)是GET,而不是POST。 爲什麼?此外,QSA不再工作... – Wilk 2012-02-21 21:49:50

+0

父文件夾中是否有任何'.htaccess'文件? – undone 2012-02-22 03:57:32

+0

不在父文件夾中,但在localhost/registry中。爲什麼? .htaccess運作良好。重寫規則不起作用。現在我用PHP將所有請求轉發到registry.php文件,但我不喜歡這個解決方案... – Wilk 2012-02-24 14:19:30

相關問題