.htaccess自定义重定向规则与Wordpress重定向规则冲突

时间:2012-11-09 02:35:13

标签: wordpress .htaccess redirect

我正在使用相同的域名将当前的静态网站移动到Wordpress。

旧网站和新网站都将其内容放在根文件夹中,并且文件名也相同,但在新的(Wordpress)网站上,我删除了当前网站上存在的.php扩展名,并添加了一个尾部斜杠,按照Wordpress永久链接。

所以我需要重定向所有旧页面(例如): /contact-us.php - > /联系-US /

我已经尝试过详细记录的选项,例如(及其变体):

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.php$ /$1 [R=301,L]

但这似乎与Wordpress .htaccess规则相冲突:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] 
</IfModule>

当我尝试访问www.site.com/contact-us.php时,我得到一个无限循环或重定向到www.site.com/index(没有.php,没有尾随斜杠),哪个Wordpress显示为404页。

我尝试使用和不使用第一组重写条件(因为我看到它们在Wordpress规则中重复),并且还在Wordpress规则之前和之后放置了我的规则。没有快乐。我最近几个小时一直在谷歌搜索,但似乎没有人解决这个具体问题。我通常会通过搜索找到我要找的东西,所以我绝望地发布了(这就是为什么这是我的第一篇帖子!)

如果有人可以提供帮助,我将非常感激。

2 个答案:

答案 0 :(得分:0)

由于php后缀,在尝试.htaccess重定向时,您似乎会遇到循环。也许别人知道解决方案。

但是尝试一个名为Redirection « WordPress Plugins.的插件。出于好奇,我尝试从contact-us.php重定向到contact-us /并且它工作正常。该插件通过php重定向,而不是写入.htaccess,这可能是差异。

我一直使用插件来主要记录404并进行一些重定向。它不需要太多的站点开销。

请确保将“选项”设置为“URL监控”,因为这会将自动重定向设置为手动更改其永久链接的帖子/页面。并将您的404日志记录设置为一两天,因为日志可能很快变大并导致巨大的数据库表。

答案 1 :(得分:0)

尝试使用:

 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /

 #Rewrite /something.php to /something/
 RewriteRule (.*)/(.*)\.php$ $1/$2/ [R=301,L]

 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L] 
 </IfModule>

此方法将重写: /contact-us/test/hello.php - &gt; /contact-us/test/hello/

如果您不希望子目录重写,请将第6行替换为:

RewriteRule /(.*)\.php$ /$1/ [R=301,L]