我对htaccess文件编码的工作原理并不太了解,但我的根目录中有以下htaccess代码,它负责从url.html重定向到url.php:
RedirectMatch permanent ^(.*)\.htm(l?)$ $1.php
RewriteEngine on
RewriteRule ^index\.htm$ index.php [NC,R]
此代码非常重要,因为网站上的所有文件名都已从“html”更改为“php”,并且我希望在转换之前制作的所有书签和链接都保持有效。
问题是,上面的htaccess代码似乎阻止wordpress博客打开,显示消息“尝试打开url时发生了太多的重定向”。
显然有某种重定向循环正在发生,但我不能在我的生活中找出究竟是什么问题。
在我的wordpress目录(/ blog)中,htaccess文件包含wordpress的常用文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
当删除上面的htaccess文件时,wordpress索引文件工作正常,但由于wordpress htaccess文件写了帖子网址的规则,它们不再有效。
总而言之,我认为两个htaccess文件(根目录中的第一个,/ blog目录中的第二个)之间存在冲突,即创建重定向循环。
关于如何解决这个问题的任何想法都会得到很好的接受。
感谢所有人的期待。
答案 0 :(得分:1)
要防止重写循环,您可以使用以下内容:
RewriteEngine on
#stop internal redirection
RewriteCond %{ENV_REDIRECT_STATUS} 200
RewriteRule ^ - [L]
#Redirect /foo.html to /foo.php
RewriteRule ^(.*?)\.html?$ /$1.php [L,R]
将RedirectMatch和RewriteRule替换为上述规则