2017-12-23 11 views
0

次の結果を得るには、.htaccess 301のリダイレクトを作成する必要がありますすべての.htmlページをフォルダやサブフォルダからメイン言語サブフォルダにリダイレクトする方法は?

オリジナルURL
example.com/en/pageX.html
example.com/fr/pageX.html
最終URL
example.com/en/pageX.html
例.COM/FR/pageX.html同時に

かiginal URL
example.com/en/X/pageX.html
example.com/fr/X/pageX.html
最終URL
example.com/en/pageX.html
例。 COM/FR/pageX.html同時に

も:

オリジナルURL
example.com/en/X/X/pageX.html
example.com/fr/X/X/pageX.html
最終URL
example.com/en/pageX.html
example.com/fr/pageX.html

も同時に:

オリジナルURL
example.com/en/X/X/X/pageX.html
example.com/fr/X/X/X/pageX.html
最終URL
example.com/en/pageX.html
example.com/fr/pageX.html例と要約するための

オリジナルURL
example.com/ ja/food.html
example.co.jp/fr/nourriture.html
example.ja/ja/food/fruits.html
example.com/fr/nourriture/fruits.html
example.com/en/food/fruits/apples.html
example.com/fr/nourriture/fruits/pommes.html
example.com/en/food/fruits/apples/apple_golden.html
例.com/fr/nourriture/fruits/pommes/pomme_golden.html
最終URL
example.com/ja/foodHTML
example.com/fr/nourriture.html
example.com/en/fruits.html
example.com/fr/fruits.html
example.com/en/apples.html
example.com /fr/pommes.html
example.com/en/apple_golden.html
example.com/fr/pomme_golden.html

はあなたの助けをいただき、ありがとうございます。

ジョセップ

答えて

2

あなたは言語識別子の間の実際のページ名をすべてのフォルダを削除し、新しいURLを表示するためにブラウザをリダイレクトするのmod_rewriteを使用することができます。詳細については、the documentationを参照してください。

RewriteEngine on 
RewriteRule ^(en|fr)/.*?([^/]+\.html)$ $1/$2 [R,L] 

このルールは^(en|fr)とパスの先頭に言語タグと一致し、我々はそれからできるだけスラッシュと、わずかな文字(/.*?)と一致キャプチャグループ1に入れます。最後に、ページ名は([^/]+\.html)$と一致し、キャプチャグループ2に格納されます。最後に、グループ置換($1および$2)を使用してURLを戻し、[R]フラグを使用して強制的にリダイレクトします。ルールが期待通りに機能するときは、リダイレクトフラグを[R=301]に変更して永続的なリダイレクトにすることができます。永続的なリダイレクトはブラウザにキャッシュされ、サーバーへの無駄な要求を防ぎ、googleのようなサイトに2つのURLが同じページであるかのようにインデックスを付けるよう強制します。

+0

ありがとうございましたが、私は2つの問題があります。あなたのRewriteRuleを使用した場合、結果は "example.com/home/user/domains/example.com/public_html/en/food.html"であり、コードに** $ 1の前にスラッシュ**を追加すると、結果ブラウザは正しいと言っていますが、エラー:接続が多すぎます。 – Josep

+0

Apache用に標準外の設定がありますか?私はあなたのドキュメントのルートが正しく設定されていないか、このルールよりも多くのルールがあり、それが矛盾している可能性があります。私は、 "多すぎる接続"エラーが何であるかは不明です。 「リダイレクトが多すぎます」という意味ですか? – Sumurai8

+0

はい、ルールが増えています。「リダイレクトが多すぎます」とは、申し訳ありません。このルールが他のルールより優先されるか、最初にこれを実行する方法はありますか?ご助力ありがとうございます。 – Josep

関連する問題