2011-04-21 136 views
0

我有在.htaccess文件中的以下mod_rewrite规则网站:的.htaccess/mod_rewrite的301问题

RewriteRule ^web-design/case-studies/(.+)/$ work.php?slug=$1 [L,NC] 
RewriteRule ^web-design/case-studies/  work.php   [L,NC] 

什么,我想要做的是建立一个301重定向任何请求,如domain.com/web-design(有或没有斜线)并重定向到example.com/web-design/case-studies/(带有斜线)。

不幸的是,RedirectRedirectMatch规则我已经试过组合似乎冲突RewriteRules我已经和一个重定向循环结束了。

正则表达式真的不是我的事,但我猜我需要一个RewriteMatch规则,匹配以/web-design开始,但不还含有/case-studies请求?这将如何在.htaccess中完成?

+0

如果你已经有'Redirect'和'RedirectMatch'这两行,你可以在这里粘贴它们。 – anubhava 2011-04-21 12:51:24

+0

这里没有'Redirect'或'RedirectMatch'规则,现在只有vanilla'RewriteRule'行。 – 2011-04-21 13:06:19

回答

0

请在您的.htaccess规则请尝试以下规则:

RewriteEngine on 
Options +FollowSymlinks -MultiViews 

RewriteRule ^web-design/?$ /web-design/case-studies/   [L,NC] 

RewriteRule ^web-design/case-studies/?$ /work.php    [L,NC] 

RewriteRule ^web-design/case-studies/(.*)$ /work.php?slug=$1 [L,NC,QSA] 

它使用QSA在过去的规则,以不丢失现有的查询参数是非常重要的。我测试了这些规则,他们似乎工作正常。按照您的要求,前两个规则中的斜杠是可选的。