此规则将像http://www.example.com/index.php?page=about这样的URL转换为像http://www.example.com/about这样友好的URL
RewriteRule ^([a-zA-Z_]+)?$ index.php?page=$1 [NC,L]
它工作得很好。但是,目前旧的网址(如http://www.example.com/index.php?page=about)在谷歌中被索引。因此,除了该规则之外,我还需要将所有旧网址(如http://www.example.com/index.php?page=about)重定向到新的友好网址(如http://www,example.com/about),这样当访问者访问旧网址时,他会被重定向到友好网址。我写了这条规则:
RewriteCond %{QUERY_STRING} ^page=([^&]+)$ [NC]
RewriteRule ^index\.php$ http://www.example.pl/%1? [NC,R=301,L]
它重定向到新的URL,但它不是显示网站内容,而是抛出一个错误ERR_TOO_MANY_REDIRECTS。
有什么帮助吗?
发布于 2017-03-24 13:47:51
由于你的内部rewriteRules,你得到了太多的重定向错误,因为他们在第一次重写迭代后将请求内部转发到相同的位置,要解决这个问题,请在你的htaccess的顶部添加以下内容,
RewriteEngine on
RewriteCond %{ENV_REDIRECT_STATUS} 200
RewriteRule ^ - [L]
或者,您可以与%{THE_REQUEST}而不是%{QUERY_STRING}进行匹配,以避免重写循环/太多重定向错误
RewriteCond %{THE_REQUEST} /index\.php\?page=([^\s]+) [NC]
https://stackoverflow.com/questions/43000867
复制相似问题