多言語のWebサイトを開発しています。言語はセッション変数として保存され、各言語のコンテンツは同じページに読み込まれます。効果的に英語のコンテンツの異なる翻訳が行われます。しかし、私は言語ごとに異なるURLが必要です。htaccess rewriteファイルからフォルダを削除します。
言語は常にURIの先頭に2文字のフォルダですが、英語にはフォルダがありません。たとえば:
www.mydomain.com/product/detail [English]
www.mydomain.com/fr/product/detail [French]
www.mydomain.com/de/product/detail [German]
www.mydomain.com/ja/product/detail [Japanese]
それらのURLのすべてがで同じファイルを取得します:ここで
www.mydomain.com/product-detail.php
は私の現在のhtaccessのルールです:
# ==== REWRITE URLS ====
RewriteEngine On
# Permanently redirect "foo.php" to "/foo"#
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule^/%1 [NE,L,R=301]
# pass through root
RewriteRule ^(index\.php|Sitemap\.xml)?$ - [L]
# no more/so add extension
RewriteCond $1 !/
RewriteCond $1 !\.php$
RewriteCond ${REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /$1.php [L]
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule ^(_css|_includes|_assets|_scripts)($|/) - [L] #exclude these folders using the 'last: L' flag
RewriteRule ^(.*)/(.*)$ /$1-$2 [L]
# === end rewrite URLs ===
だから私は、余分な書き換えルールが必要'最初のフォルダが2文字で、FR | DE | JA'と一致する場合は無視しますが、既存のルールでも動作します。
htaccessファイルは私の力ではないとして、任意の助けいただければ幸いです...彼らは場所で少し、あいまいな矛盾や長ったらしいだとして
おかげで、それはURLのこのタイプのために動作します: 'mydomain.com/FR /製品/ detail'が、それはのような何かに404で失敗します。 'mydomain.com/fr/product' – Dodo
私はその仕事をするルールを追加しました。お知らせ下さい。 – SuperDuperApps
ありがとうございますが運はありません。これは逆順で動作します。 ''/product'は '' OK 'ですが、 ''/product/detail''は404です。この時点で、最後のルールは次のようになります: 'RewriteCond%{REQUEST_URI}!\ php $ RewriteRule ^(_ css | _includes | _assets | _scripts)($ | /) - [L] RewriteRule ^(?: (?:fr | de | ja)/)(。*)$/$ 1 [L] ' – Dodo