1

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

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

所以我需要重定向所有旧页面(例如):/contact-us.php -> /contact-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 规则之前和之后。没有喜悦。过去几个小时我也一直在谷歌搜索,但似乎没有人解决这个特定问题。我通常会通过搜索找到我要找的东西,所以我真的很绝望地在发帖(这就是为什么这是我的第一篇帖子!)

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

4

2 回答 2

0

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

但是尝试一个名为Redirection « WordPress Plugins 的插件。出于好奇,我尝试了从contact-us.php 到contact-us/ 的重定向,并且效果很好。该插件通过 php 重定向而不是写入 .htaccess,这可能是不同之处。

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

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

于 2012-11-09T03:43:03.807 回答
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->/contact-us/test/hello/

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

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

于 2012-11-09T03:45:23.120 回答