既存の Web サイトを多言語化するよう依頼されました。
これに備えて、既存のすべてのページを /path/page から /en/path/page に移動する必要がありました
既存の受信リンクを維持するには、htaccess リダイレクトを設定して、元の URL から新しい /en/path/page URL にリクエストを送信する必要がありますが、これを機能させるのに問題があります。
これは私が現在持っているものです。
RewriteCond %{REQUEST_URI} !^/en$
RewriteRule ^(.*)$ /en/$1 [R=301,L]
これは、要求された URI をチェックすることを意図していると思います。/en で始まらない場合は、要求された URI の先頭に /en を追加します...しかし、機能しないため、明らかに間違っています。
どんな助けでも感謝します。ありがとうございました。
アップデート。これは ExpressionEngine サイトであり、URL の index.php 部分を削除する追加のルールがあるため、両方のルールがここにあります。
# Rewrite for new language based urls
# This is to try and get all current pages going to /en/(old url) with a 301 redirect
RewriteCond %{REQUEST_URI} !^/en(/.*)?$
RewriteRule ^(.*)$ /en/$1 [R=301,L]
# Removes index.php
RewriteCond $1 !\.(gif|jpe?g|png|ico)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
index.php の後に言語を書き直して、これも試しました。私はまだループで立ち往生しています。