2013-11-21 15 views
5

この質問はおそらく答えられているが、私は適切な解決策を見つけることができない。.htaccess 301ディレクトリ内のすべてのページをクエリーコードなしで他のドメインにリダイレクト

私は301がそうのように、新しいドメインに

http://www.domain1.com/nl/dolor/sith 
http://www.domain1.com/nl/loremipsum 
http://www.domain1.com/nl 

下記のようなすべてのページをリダイレクトすると同時に、クエリ文字列をドロップしたいと思います:

http://www.domain2.nl 

他のすべてのページ、例えばhttp://www.domain1.com/be/loremipsumはまだ動作するはずです。接尾辞がnlのものだけがリダイレクトされます。

これらは実際のディレクトリではないことに注意してください:私の.htaccessファイルに私は、クエリ文字列を書き換えるために、次の文を持っている:

# Personal Rewrites 
RewriteRule ^([A-Za-z0-9-_]+)/?$                       index.php?lid=$1          [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$                   index.php?lid=$1&pl1=$2         [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$               index.php?lid=$1&pl1=$2&pl2=$3       [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$           index.php?lid=$1&pl1=$2&pl2=$3&pl3=$4     [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$      index.php?lid=$1&pl1=$2&pl2=$3&pl3=$4&pl4=$5   [L] 
RewriteRule ^([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/([A-Za-z0-9-_]+)/?$  index.php?lid=$1&pl1=$2&pl2=$3&pl3=$4&pl4=$5&pl5=$6  [L] 

私は伝統的な書き換えを試してみたが、これはまた、送信クエリ文字列:

Redirect 301 /nl http://www.domain2.nl 

その他の手法は動作していないようです。そして、私は正規表現に堪えません...

誰かがフィッティングの解決策を教えてくれますか?事前に感謝します

答えて

6

としてあなたDOCUMENT_ROOT/.htaccessファイルの最初のルールをこのルールを追加します。

RewriteRule ^nl(/.*|)$ http://www.domain2.nl/? [L,R=301,NC] 

正規表現についてのもう一つのヒント:

あなたが使用するように正規表現を変更する必要があります。代わりに[A-Za-z0-9-_][\w-]以来:

  1. ハイフン
  2. \wさをエスケープ避けるために、文字クラスの最初または最後のcharaccterする必要があります等価物[a-zA-Z0-9_]
+0

ブーム!あなたは勝つ!これは魅力のように機能します。また、あなたの提案通りに '[A-Za-z0-9 -_]'を '[\ w-]'に置き換えました。どうもありがとう!まもなく私は '/?return = link'(セカンダリクエリーストリング)のような構造を、この場合に表示されるリライト構造と組み合わせて使う方法についてもう一度質問します。多分あなたはそこでも助けることができますか? :-) – maartenmachiels

+1

あなたは喜んで、うまくいきました。新しい質問のためにここのコメントに質問のリンクを残してください。私は確かに自分のレベルを試してみます。 – anubhava

+1

申し訳ありませんが、私の恩恵をあなたに与えることを忘れました:-) – maartenmachiels

4

ターゲットの末尾に?を追加するだけです。同様mod_aliasでこれを行うことができます。

Redirect 301 /nl http://www.domain2.nl? 

をしかし、あなたは、ブラウザのアドレスバーに浮遊?が表示されます。

あなたが浮遊?をしたくない場合は、mod_rewriteのに固執する必要があります:

RewriteRule ^nl/(.*)$ http://www.domain2.nl/$1? [L,R=301] 

(あなたが既に持っている書き換えの前にいずれかをお勧めします

関連する問題