2016-11-10 16 views
1

私はwww.example.com/de/somethingのようなURLを持っており、/de/で始まるものすべてwww.example.comにリダイレクトする必要があります。私はこの.htaccessのURLを書き換えます

redirect 301 /de http://example.com 

を行っていると、それはすべてのリンクをリダイレクトちょうど/de一部と結果を除去することwww.example.com/somethingある瞬間

これを修正するにはどうすればよいですか?

おかげで

+0

"wwwホスト名"に再度リダイレクトする別の書き換えルールがあるかのように聞こえます。 – arkascha

+0

私はあなたが正しいと思います。 @starkeen答えは私のために働いたが、特定のURL(/ de /何か)にリダイレクトされた(/何か)。とてもうるさい。 :) –

答えて

1

リダイレクトディレクティブは、URIの残りの部分をmatchsし、ターゲットに追加し、あなたが/デ/あなたがすべきターゲットにしたい場合は、特定のURI

redirectMatch 301 ^/de/? http://example.com 
0

をリダイレクトするために、RedirectMatchを使用することができますリダイレクトはあなたがマッチしたものをすべて "後"にターゲットに含めます。宛先として別のバーチャルホストのために

あなたはこれ欲しい:

Redirect 301 /de/ http://example.com/de/ 

か何がしたいことは同じバーチャルホスト/デ/に、そして使い負の先読みの内側にリダイレクトしている場合

Redirect 301 /de http://example.com/de 

RedirectMatch ^(?!de) http://example.com/ 

コンテキストはバーチャルホストのために、.htaccessのであればそれは次のようになります。

RedirectMatch ^/(?!de) http://example.com/ 

注:それはあなたがあなたの質問に説明するものだ、とも私はスラッシュと一致するので、私は/デ/元々使用ターゲット。スラッシュのないソースとターゲットの両方とも、/ desomethingや/ de/somethingのような場合には問題ありません。いずれにせよ、常にスラッシュまたはそれらの欠如に一致します。

注2:あなたがサイトの管理者でない場合を除き、リダイレクトに.htaccessを使用しないでください。それは、ファイル/ sがヒットごとに何度もチェックされる必要があるので、物事を複雑にし、不必要なオーバーヘッドを追加します。

+0

リダイレクト先とパターンが同じであるため、リダイレクトループが発生します。 – starkeen

+0

あなたは本当に彼が本当に望んでいることを誤解していると言っています。あるケースではwww.example.comと言い、例ではexample.comと言いますから、別のバーチャルホストを使用しました。ただそれのために別のケースを追加しましょう。 –