我正在处理一个支持英语和西班牙语的网站,我想知道如何将所有请求重定向到特定语言的子域到主域(en.mysite.com和es.mysite) .com到mysite.com)。
整个网站都是用PHP编写的,它有一个主脚本index.php
,用于处理language
和section
GET参数并相应地显示内容。
现在,我尝试在mysite.com根目录下的.htaccess文件中执行以下操作。我认为它澄清了我想要做的事情:
RewriteEngine On
# English redirects
RewriteRule ^en.mysite.com$ index.php?language=English§ion=Main
RewriteRule ^en.mysite.com/store$ index.php?language=English§ion=Store
RewriteRule ^en.mysite.com/create_account$ index.php?language=English§ion=CreateAcc
# Spanish redirects
RewriteRule ^es.mysite.com$ index.php?language=Spanish§ion=Feed
RewriteRule ^es.mysite.com/comprar$ index.php?language=Spanish§ion=Store
RewriteRule ^es.mysite.com/crear_cuenta$ index.php?language=Spanish§ion=CreateAcc
但这不起作用。谁能告诉我这里我做错了什么?
答案 0 :(得分:0)
您不能在RewriteRule
中将主机名包含在匹配项中,因为它只与URI匹配。您需要为每个规则使用与主机名匹配的单独RewriteCond
:
RewriteCond %{HTTP_HOST} ^en.mysite.com$ [NC]
RewriteRule ^$ /index.php?language=English§ion=Main
RewriteCond %{HTTP_HOST} ^en.mysite.com$ [NC]
RewriteRule ^store$ /index.php?language=English§ion=Store
RewriteCond %{HTTP_HOST} ^en.mysite.com$ [NC]
RewriteRule ^create_account$ /index.php?language=English§ion=CreateAcc
然后西班牙语重写:
RewriteCond %{HTTP_HOST} ^es.mysite.com$ [NC]
RewriteRule ^$ /index.php?language=English§ion=Feed
RewriteCond %{HTTP_HOST} ^es.mysite.com$ [NC]
RewriteRule ^comprar$ /index.php?language=English§ion=Store
RewriteCond %{HTTP_HOST} ^es.mysite.com$ [NC]
RewriteRule ^crear_cuenta$ /index.php?language=English§ion=CreateAcc