Mod Rewrite不工作,我无法解决原因

时间:2014-04-24 14:09:53

标签: regex wordpress apache .htaccess mod-rewrite

我已经在圈子里走了几个小时了,我希望有人能够准确地澄清发生了什么。

此客户刚刚从静态网站迁移到Wordpress网站,他们希望更新其网站上的路径,以便任何指向旧网页的链接都会转到新网站。

所以,例如,这个页面:

http://www.compass-travel.co.uk/timetables/service_106.html

将链接到此页面:

http://www.compass-travel.co.uk/compass-timetables/bus-timetables/

如果您尝试点击第一个链接,您仍会看到旧页面。我使用了许多不同的指南和技巧,但我仍然无法使其发挥作用。

到目前为止,.htaccess看起来像这样:

RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.compass-travel.co.uk/$1 [R=301,L]
RedirectMatch 301 /timetables/(.*) /compass-timetables/bus-timetables/$1
RewriteRule   ^/timetables/(.+)  http://www.compass-travel.co.uk/compass-timetables/bus-timetables/$1  [R=301,L]

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

# END WordPress

但正如你所看到的,那是行不通的。

如果有人能指出我正确的方向,我会非常感激。

由于

罗布

1 个答案:

答案 0 :(得分:1)

试试这段代码:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.compass-travel.co.uk/$1 [R=301,L]

RewriteRule ^timetables/(.+)$ /compass-timetables/bus-timetables/$1 [R=301,L]

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

# END WordPress