【问题标题】:Redirect subdomain to main domain将子域重定向到主域
【发布时间】:2012-07-22 08:35:09
【问题描述】:

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

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

现在,我尝试在 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

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

【问题讨论】:

    标签: apache mod-rewrite redirect subdomain


    【解决方案1】:

    您不能将主机名作为匹配的一部分包含在 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
    

    【讨论】:

    • 非常感谢您的回答。我不知道它是否有效,但我最终使用了子目录,因为它们比子域更容易处理。
    猜你喜欢
    • 2017-07-10
    • 2016-06-11
    • 2015-06-11
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 2013-06-16
    • 2015-01-04
    • 2013-04-28
    相关资源
    最近更新 更多