Mod rewrite Mod_rewrite-删除问号,而不仅仅是查询字符串

Mod rewrite Mod_rewrite-删除问号,而不仅仅是查询字符串,mod-rewrite,query-string,Mod Rewrite,Query String,我需要将类似mydomain.com/index.php的url重定向到mydomain.com/ 这听起来很简单,但软件框架也使用类似mydomain.com/index.php的URL?这些URL(添加了一个问号)不应重定向到mydomain.com 这个问题不能用计算机来解决 RewriteCond %{QUERY_STRING} ^$ RewriteRule ^(.*)$ /? [L,R=301] 因为这将替换/搜索完整的查询字符串,例如foo=bar,但不是单个问号 如何仅重定向in

我需要将类似mydomain.com/index.php的url重定向到mydomain.com/

这听起来很简单,但软件框架也使用类似mydomain.com/index.php的URL?这些URL(添加了一个问号)不应重定向到mydomain.com

这个问题不能用计算机来解决

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ /? [L,R=301]
因为这将替换/搜索完整的查询字符串,例如foo=bar,但不是单个问号

如何仅重定向index.php?我希望有人能帮我,因为我对mod_rewrite和正则表达式绝对是个新手。

你只需要这个:

RewriteRule ^index\.php$ ^$ [R=301,QSA,L]
# if QUERY_STRING is empty...
RewriteCond %{QUERY_STRING} ^$
# ... then try to apply the rule
RewriteRule ^index\.php$ ^$ [R=301,QSA,L]
注意:这是针对这种情况的:浏览器中的用户键入
mydomain.com/index.php
,并透明地重定向到
mydomain.com/
(在浏览器中可见)

如果你想要相反的结果,这应该是可行的:

RewriteRule ^$ /index\.php [R=301,QSA,L]
这也将进行重定向(在浏览器中,URL将从
mydomain.com/index.php
更改为
mydomain.com/

请告诉我它是否有效

[更新]

如果您不想要像
/index.php?
这样的URL和具有查询字符串的URL,您只需要以下内容:

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

感谢您的帮助,但不幸的是,它没有按要求工作。当我使用您的第一个建议时,mydomain.com/index.php?也将重定向到mydomain.com/?但该URL不应重定向,只有纯mydomain.com/index.php应重定向到mydomain.com为什么?
仅用于查询字符串。也许您不需要如果有查询字符串,则重定向?好的,我已根据您的需要更新了我的答案!生活很美好!