サブディレクトリメソッドを使用して複数の言語を許可するように htaccess を設定する際に問題が発生しています。
http://www.domain.com/en/
http://www.domain.com/sw/
http://www.domain.com/ie/
また、複雑なことに、プロジェクトは現在ライブではなく、開発サーバー上にあります。たとえば、現在次のプロジェクトにアクセスしています。
http://dev.domain.com/devname/projectname/
そして、上記が自動的に 301 リダイレクトされるようにしたい:
http://dev.domain.com/devname/projectname/en/
これが私のhtaccessです:
Options +FollowSymLinks -MultiViews
RewriteEngine on
# ----------------------------------------------------------------------
# MULTI LANGUAGE SUB DIRECTORY
# ----------------------------------------------------------------------
RewriteCond %{REQUEST_URI} !^/(en|sw)/
RewriteRule ^(.*)$ en/$1 [R=301,L]
# ----------------------------------------------------------------------
# Rewrite rules
# ----------------------------------------------------------------------
## CASE STUDIES ##
RewriteRule ^casestudies/([^/\.]+).html$ index.php?controller=contents&method=viewCasestudy&link=$1 [L,QSA]
## PRODUCTS ##
RewriteRule ^products/([^/\.]+).html$ index.php?controller=contents&method=viewProduct&link=$1 [L,QSA]
RewriteRule ^([a-z{2}]+)(/)?$ index.php?controller=contents&method=viewHome&lang=$1 [L,QSA] # Default load
RewriteRule ^(/)?$ index.php?controller=contents&method=viewHome [L,QSA] # Default load
上記は実際には次の場所にリダイレクトされます。
http://dev.domain.com/home/webserver_dir/devname/projectname/en/
..そして、RewriteBaseを使用すると、ただ行くようです...
http://dev.domain.com/en/
だから私の質問:開発サーバー上のディレクトリに対して正しく機能する言語 URL を取得するにはどうすればよいですか? そして、環境固有のルールなしでライブになったときに理想的に機能します。
おまけの質問:後続のすべての書き換えルールの前に ([az{2}]+) ビットを追加する必要がありますか?それとも、以降のすべてのルールに影響するすべてをキャッチすることはできますか?
編集 - - - - - - - - - - - - - - -
提案されているように、次のように減らしました...
Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /devname/projectname/
RewriteCond %{REQUEST_URI} !^/(en|sw)(/|$) [NC]
RewriteRule ^(.*)$ en/$1 [R=301,L]
RewriteRule ^([a-z]{2})/?$ index.php?controller=contents&method=viewHome&lang=$1 [NC,L,QSA] # Default load
...しかし、今は にリダイレクトしていhttp://dev.domain.com/devname/projectname/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/
ます。何かアイデアはありますか?