2011-11-24 71 views
0

我需要重定向像mydomain.com/index.php一個URL,mydomain.com/mod_rewrite的 - 刪除問號,不僅查詢字符串

這聽起來很容易,但軟件框架也使用類似的URL mydomain.com的index.php?這些網址(帶單個問號)不應該重定向到mydomain.com。

問題不能使用蒙山

RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^(.*)$ /? [L,R=301] 

,因爲這取代了完整的查詢字符串,例如類似foo =欄而不是一個問號/搜索來解決。

我該如何管理只重定向index.php?我希望somone可以幫助我,因爲我是一個mod_rewrite和正則表達式的絕對新手。

回答

0

你只需要這樣:

​​

注:這是這種情況:用戶在瀏覽器類型mydomain.com/index.php並透明地重定向到mydomain.com/(它在瀏覽器的可見)。

如果你想相反這應該工作:

RewriteRule ^$ /index\.php [R=301,QSA,L] 

這將做一個重定向太(並在瀏覽器中,URL將從mydomain.com/index.php改變mydomain.com/

請告訴我,如果作品。

[更新]

如果你不希望像​​的URL和URL其中有一個闕ry字符串,你只需要這個:

# if QUERY_STRING is empty... 
RewriteCond %{QUERY_STRING} ^$ 
# ... then try to apply the rule 
RewriteRule ^index\.php$ ^$ [R=301,QSA,L] 
+0

感謝您的幫助,但不幸的是它不能按需要工作。當我使用你的第一個建議mydomain.com/index.php?也將被重定向到mydomain.com/?但該網址不應重定向,只有純粹的mydomain.com/index.php應該重定向到mydomain.com –

+0

爲什麼? **'?'**僅用於查詢字符串。如果有查詢字符串,也許你不想重定向?好的,我已經爲您的需要更新了我的答案!生活很美好! –