我使用codeigniter为我的网站,之前总是有index.php?在我的每个url或链接上,例如
mysite.com/index.php?/about
谷歌索引了我所有的url与index.php?我想删除它,重新定位它。我在重写URL并将其重定向到mysite.com/about
时遇到了问题,这是我迄今为止尝试过的
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}'s/+index'.php'?(/[^'s'?]+)? [NC]
RewriteRule ^ %1/ [QSA,L,R=301]
结果是,它只删除了index.php,例如,mysite.com/index.php?/about
将变成mysite.com/?/about
,我不知道如何删除问号,
我不是很擅长mod_rewrite提前感谢您的帮助。
我认为你可以稍微改进一下规则。
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} index'.php?'?.+
RewriteRule .*$ %{QUERY_STRING}? [R=301,L]
基本上,您不必担心%{THE_REQUEST}
中的整个请求行,它删除了所有复杂的正则表达式。此外,该规则将重定向到%{QUERY_STRING}
中列出的内容,并删除查询字符串。
我不知道你为什么用QSA
放在首位。我认为这是之前问题的一部分。作为练习,您可以尝试删除QSA
,看看会发生什么。
你应该试试这个。
RewriteCond %{QUERY_STRING} ^/[a-z]+$ [NC]
RewriteRule ^/index.php$ %{QUERY_STRING} [NC,L,R=301]