1

我正在处理一个同时支持英语和西班牙语的站点,我想知道如何将所有请求重定向到特定语言的子域到主域(en.mysite.com 和 es.mysite.com 到mysite.com)。

整个站点是用 PHP 编写的,它有一个主脚本index.php,用于处理languagesectionGET 参数并相应地显示内容。

现在,我尝试在 mysite.com 根目录下的 .htaccess 文件中执行以下操作。我认为它澄清了我正在尝试做的事情:

RewriteEngine On

# English redirects

RewriteRule ^en.mysite.com$ index.php?language=English&section=Main
RewriteRule ^en.mysite.com/store$ index.php?language=English&section=Store
RewriteRule ^en.mysite.com/create_account$ index.php?language=English&section=CreateAcc

# Spanish redirects

RewriteRule ^es.mysite.com$ index.php?language=Spanish&section=Feed
RewriteRule ^es.mysite.com/comprar$ index.php?language=Spanish&section=Store
RewriteRule ^es.mysite.com/crear_cuenta$ index.php?language=Spanish&section=CreateAcc

但这不起作用。谁能告诉我我在这里做错了什么?

4

1 回答 1

0

您不能将主机名作为匹配的一部分包含在 a 中RewriteRule,因为它仅与 URI 匹配。您需要为每个规则RewriteCond使用与主机名匹配的单独的:

RewriteCond %{HTTP_HOST} ^en.mysite.com$ [NC]
RewriteRule ^$ /index.php?language=English&section=Main

RewriteCond %{HTTP_HOST} ^en.mysite.com$ [NC]
RewriteRule ^store$ /index.php?language=English&section=Store

RewriteCond %{HTTP_HOST} ^en.mysite.com$ [NC]
RewriteRule ^create_account$ /index.php?language=English&section=CreateAcc

然后西班牙语重写:

RewriteCond %{HTTP_HOST} ^es.mysite.com$ [NC]
RewriteRule ^$ /index.php?language=English&section=Feed

RewriteCond %{HTTP_HOST} ^es.mysite.com$ [NC]
RewriteRule ^comprar$ /index.php?language=English&section=Store

RewriteCond %{HTTP_HOST} ^es.mysite.com$ [NC]
RewriteRule ^crear_cuenta$ /index.php?language=English&section=CreateAcc
于 2012-07-24T04:06:44.820 回答