我正在使用相同的域名将当前的静态网站移动到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规则之前和之后放置了我的规则。没有快乐。我最近几个小时一直在谷歌搜索,但似乎没有人解决这个具体问题。我通常会通过搜索找到我要找的东西,所以我绝望地发布了(这就是为什么这是我的第一篇帖子!)
如果有人可以提供帮助,我将非常感激。
答案 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]