うまくいけば、誰かが私にこれに関するヒントを与えることができます。
私がやろうとしていることは、ブラウザの言語と入力されたURLの両方に応じて訪問をリダイレクトすることです(/ v2が含まれているかどうかに関係なく)。アドレスバーに元のURLを保持したいので、301ではなく内部apacheリダイレクトのみを使用できることを理解しています。
URL BROWSER LANGUAGE INTERNAL REDIRECTION
domain.com en en.html
domain.com/v2 en en_v2.html
domain.com es es.html
domain.com/v2 es es_v2.html
domain.com other en.html
domain.com/v2 other en_v2.html
だからこれは私が.htaccessで試したことです:
#mod_rewrite on
RewriteEngine on
#Default language redirection
RewriteRule ^.*$ en.html
RewriteRule ^.*?v2$ en_v2.html
#Redirection by Language en
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^.*$ en.html
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^.*?v2$ en_v2.html
#Redirection by Language es
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^.*$ es.html
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^.*?v2$ es_v2.html [L]
すべてのhtmlファイルは、.htaccessファイルと同じルートフォルダーにあります。このようにして、たとえば、いくつかの書き換えを以前の書き換えに「上書き」させようとしています。
RewriteRule ^.*$ es.html
すべてに一致する、によって上書きされます
RewriteRule ^.*?v2$ es_v2.html
/v2がURLに含まれている場合。しかし、それがそのように機能するかどうかはわかりません。
誰かが私を助けることができますか?
編集:解決しました、これは最終バージョンです:
#mod_rewrite on
RewriteEngine on
#Allow direct access to html files
RewriteRule ^en(_v2)?\.html - [L]
RewriteRule ^es(_v2)?\.html - [L]
#Without this the css and other files are redirected and won't load properly
RewriteRule \.(gif|jpe?g|png|js|css|swf|php|ico|txt|pdf|xml|eot|svg|ttf|woff)$ - [L]
#Redirection by Language
RewriteCond %{HTTP:Accept-Language} (es) [NC]
RewriteRule ^v2$ es_v2.html [L]
#Redirection by Language
RewriteCond %{HTTP:Accept-Language} (es) [NC]
RewriteRule .* es.html [L]
#Defaults
RewriteRule ^v2$ en_v2.html [L]
RewriteRule .* en.html [L]