2009-11-11 18 views
2

在我的.htaccess,我有以下基本URL重寫問題在PHP(mod_rewrite的)

RewriteEngine On 

RewriteRule ^users/?$ users.php 
RewriteRule ^users/([a-z]+)/?$ users.php?username=$1 

一切都會按計劃,如果我做

http://example.com/users/ 
http://example.com/users/joeschmoe/ 

,PHP將改爲 「爲joeschmoe」 爲對於

$_GET['username'] 

但是,如果我這樣做

http://example.com/users/joeschmoe/?foo 

PHP不會拿起

$_GET['foo'] 

任何想法,爲什麼這種情況正在發生,我怎麼能得到它的工作?謝謝你的時間!

回答

4

您可能正在尋找 「QSA」 選項RewriteRule

'qsappend|QSA'(查詢字符串追加)
該標誌強制重寫 引擎追加查詢字符串部分01將的替換字符串替換爲 現有的字符串,而不是替換 它。如果要通過重寫 規則將更多 數據添加到查詢字符串,請使用此選項。

該網頁還指出:

修改查詢字符串

默認情況下,查詢字符串加改變地通過 。
但是,您可以在 中創建包含 字符串部分的 替換字符串中的URL。只需用 這個問號標記裏面的替換字符串 表示下面的文字 應該被重新注入查詢字符串 。
如果要刪除現有查詢字符串 ,請僅使用 問號結束 替換字符串。
要合併新的 和舊的查詢字符串,請使用[QSA] 標誌。


在你的情況,這樣的事情應該做的:

RewriteEngine On 

RewriteRule ^users/?$ users.php 
RewriteRule ^users/([a-z]+)/?$ users.php?username=$1 [QSA] 
+0

感謝,您的解決方案工作 – axsuul 2009-11-11 21:09:02

6

添加[QSA]選項,您RewriteRule,這將使阿帕奇追加查詢字符串重定向的URL:

RewriteRule ^users/?$ users.php [QSA] 
RewriteRule ^users/([a-z]+)/?$ users.php?username=$1 [QSA] 
+0

謝謝,工作完美 – axsuul 2009-11-11 21:08:26