2012-03-22 183 views
0

我有一个新的网站,链接到许多地方,但网站地图的结构已更改。我需要重定向一些旧的网址到相关的新网址。301重定向只在特定的网址,同时使用SEO友好重写

该网站还需要保持其seo友好的网址写作。

我有这个在我的.htaccess:

<IfModule mod_rewrite.c> 

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}/index.html !-f 
RewriteCond %{REQUEST_FILENAME}/index.php !-f 

RewriteCond %{REQUEST_URI} !^/(csr|quality|schools|project_management|third_sector|nhs|about)$ 


RewriteRule ^(.*)$ index.php/$1 [L] 

RewriteRule ^(csr|quality|schools|project_management|third_sector|nhs|about)$ /about-us [L,R=301] 

</IfModule> 

去/约重定向到/约 - 我们(这是伟大的),和去/质量也重定向到/约 - 我们(这是正确)。然而,去/ nhs或/学校(例如)给出了404。为什么会这样?

任何帮助将不胜感激。

[编辑]

删除[L],它开始工作。谢谢

+1

我尝试WAMP下运行这些规则,他们都工作得很好,包括NHS和学校。你在使用CMS吗?如果是的话CMS是什么? – Andrew 2012-03-22 12:17:42

+0

使用Conrete5 - 我现在在工作,谢谢。 – beingalex 2012-03-22 12:21:48

+0

你可以在这里发布解决方案给其他人寻找这个问题的答案吗? – Andrew 2012-03-22 12:42:55

回答

0

我想这可能是因为你的RewriteRule ^(.*)$ index.php/$1 [L]有一个[L]标志(这意味着最后。)。

如果符合第一条规则RewriteRule ^(.*)$ index.php/$1 [L]的条件,Apache将停止执行其他规则。

尝试删除[L]

+0

谢谢你的工作。 – beingalex 2012-03-22 12:11:50