【问题标题】:Rewrite rule to use root files on a subdomain重写规则以使用子域上的根文件
【发布时间】:2014-07-15 00:43:06
【问题描述】:

我想知道如何使用位于子域根级别的文件。

我目前正在使用子文件夹来管理我网站上的语言,网址如下: http://www.example.com/es/page.html (我想切换到http://es.example.com/page.html

在我的 /.htaccess 文件中,我有以下规则,它就像一个魅力:

RewriteRule ^(es|fr|de|br)/page\.html$ script.php?lang=$1 [L]

但是,我怎样才能从位于子文件夹(在本例中为“/es/”)中的子域重定向到这个 /script.php?lang=es 文件(位于根目录)?

谢谢

注意。我可以在 /es/.htaccess 中执行此操作吗? (最简单的选择是在那里定义 RewriteBase / 一级,但我认为这是不可能的)。

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:
    RewriteCond %{HTTP_HOST} ^(es|fr|de|br)\.example\.com$
    RewriteRule ^/?page\.html$ page.php?lang=%1 [L]
    

    【讨论】:

    • 谢谢,但它不起作用。 RewriteRule ^/?page\.html$ another_name.php?lang=%1 [L] 应该重定向到 another_name.php,而不是 page.php。就像这条规则只是简单地将 xx.html 转换为 xx.php(当然 xx.php 没有找到)。
    • 在问题中看不到任何another_name.php
    • 根据您的示例,如果我输入RewriteRule ^/?page\.html$ script.php?lang=%1 [L],它将重定向到 page.php 而不是 script.php。我编辑了我的问题以使其更易于理解。
    • @sun 子域名在哪里? htaccess 不能重写当前虚拟主机的文档根目录后面的任何本地路径。在您的情况下,所有(子)域都必须有一个文档根 IMO。
    • 我认为这是因为您在{HTTP_HOST} 之前放置了$ 而不是%,现在它可以工作了,谢谢!
    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2014-03-06
    相关资源
    最近更新 更多