网站htaccess重定向与wordpress冲突

时间:2016-07-12 14:31:22

标签: wordpress apache .htaccess mod-rewrite

我对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目录中的第二个)之间存在冲突,即创建重定向循环。

关于如何解决这个问题的任何想法都会得到很好的接受。

感谢所有人的期待。

1 个答案:

答案 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替换为上述规则