2011-04-21 76 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在過去的規則,以不丟失現有的查詢參數是非常重要的。我測試了這些規則,他們似乎工作正常。按照您的要求,前兩個規則中的斜槓是可選的。