我在我的网站上使用 codeigniter,之前总是有那个 index.php?在我的每个网址或链接上,例如
mysite.com/index.php?/about
Google 已使用该 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
并看看会发生什么。
关于php - URL Mod 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17078794/