2012-03-23 20 views
0

URLの1つのセグメントを新しいバージョンにリダイレクトする301必要があります。301 URLに不正な余分なセグメントを追加するリダイレクト

私の目的は

www.domain.co.uk/farm/whatever/

にwww.domain.co.uk/farm_cottages/whateverをリダイレクトです/

私がこれを行うために使用しているルールは次のとおりです。

に、RedirectMatch 301^/農場//farm_cottages/

しかし、それは部分的に動作しますが、追加?/農場/ farm_cottages後/最後のURL、すなわち、いくつかの理由があります。ここで

www.domain.co.uk/farm_cottages/?/farm/whatever/

は、私は書き換えルールの一つは、リダイレクトルールに干渉することができ信じているように設定私の全体の書き換えルールであります。

#redirect /farm/ to /farm_cottages/ 
RedirectMatch 301 ^/farm/ /farm_cottages/ 

<IfModule mod_rewrite.c> 
RewriteEngine on 

# no WWW to WWW 
RewriteCond %{HTTP_HOST} !^www.domain.co.uk$ [NC] 
RewriteRule ^(.*)$ http://www.domain.co.uk/$1 [R=301,L] 

# Force trailing slash on URLs 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://www.domain.co.uk/$1/ [L,R=301] 

#Remove index.php 
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC] 
RewriteRule ^index\.php(.+) $1 [R=301,L] 

</IfModule> 

サイトはExpressionEngineの中に内蔵されているので、URLのセグメントは、実際のフォルダを表すものではありません - 私はこれはしかし重要でなければならないとは思いません。

どのようなアイデアも大歓迎です!おかげ

答えて

1

[OK]を私は次のように最後にこれを解決 - 私はそれが将来的に誰かを助けるかもしれない願っています:

RewriteRule ^farm/(.*)$ /farm_cottages/$1 [QSA,R=301,L]