我有一个域example.com
,其中example.com/en-US/
上有一个英文版网站,example.com/fr-FR/
上有一个法文版
到目前为止,我们已将英文版本用作默认版本,因此我们会使用example.com
文件中的这些规则将请求example.com/en-US/
的所有人重定向到.htaccess
:
Redirect 301 /index.html http://examle.com/en/
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://example.com/$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
因此,当您在浏览器中请求http://exmaple.com时,服务器将请求index.html,这将触发Rediret到/en-US/
目录。
现在我们得到了法语example.fr
TLD - 指向同一个网站空间。我现在正在寻找一种方法将浏览器请求http://example.fr重定向到http://example.com/fr-FR/
我尝试添加以下条件,但会导致某种循环在网址中添加大量/en-US/
。
请帮助我,我需要一种重定向方式
hxxp://example.com - > hxxp://example.com/en-US/
hxxp://example.fr - > hxxp://example.com/fr-FR/
所有人明确请求hxxp://example.com/index.html - > hxxp://example.com/en-US/ too
答案 0 :(得分:0)
您可以根据基于HTTP_HOST
的条件使用此规则:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.com$ [NC]
RewriteRule ^(?:index\.html)?$ /en-US/ [L,NC,R=301]
RewriteCond %{HTTP_HOST} ^(?:www\.)?example\.fr$ [NC]
RewriteRule ^(?:index\.html)?$ /fr-FR/ [L,NC,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^ %{REQUEST_URI}/ [L,R=301,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L,NE]