URL Mod Rewriting


URL Mod Rewriting

我使用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]