2012-06-27 82 views
2

我正在使用mod_rewrite將.html重寫爲.php。當mod_rewrite將.html重寫爲.php時,_ _GET變量消失

RewriteRule ^([0-9a-zA-Z-_]+)\.html$ index.php?p=$1 [L] 

但是,我在URL中使用$ _GET時遇到問題。它工作正常,如果請求的URL是這種格式:index.php?a=f1

但是,如果它重寫到home.html?a=f1,沒什麼。

假設這只是瀏覽器在打擊.html後停止閱讀。有沒有辦法做到這一點?

回答

11

您需要添加QSA標誌:

RewriteRule ^([0-9a-zA-Z-_]+)\.html$ index.php?p=$1 [QSA,L] 

原因是在文檔中最好的解釋:

當替換URI包含aq uery字符串,RewriteRule的默認行爲 是放棄現有的查詢字符串,並用新生成的字符串取代 。使用[QSA]標誌會導致查詢 字符串被合併。

+0

這給出了一個內部服務器錯誤。 – Rick

+0

它應該工作(它適用於我的機器)。 –

+0

我刪除了L標誌,它的工作。如果我將其保留爲[QSA,L],則會導致內部服務器錯誤。 – Rick

0

你必須調用home.htm&a=f1

隱藏的網址是:index.php?p=home&a=f1

+1

這給出了404 Not Found錯誤。 – Rick