2011-11-24 30 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

为什么? **'?'**仅用于查询字符串。如果有查询字符串,也许你不想重定向?好的,我已经为您的需要更新了我的答案!生活很美好! –