【问题标题】:redirect from subdomain to domain + .htaccess从子域重定向到域 + .htaccess
【发布时间】:2010-11-22 05:02:15
【问题描述】:

我可以为多个域配置 RewriteRule。

就像我的要求是 我当前的域名 www.maindomain.com 假设我有三个域和子域 子域网址是 example1.maindomain.com example2.maindomain.com example3.maindomain.com

现在我希望当用户尝试访问 www.example1.com 时,它应该获得 example1.maindomain.com 的内容,对于 example2、example3 也是如此

我正在使用 apache + 乘客。

感谢您的帮助。

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    首先,编写一个匹配所有要重定向的域名的条件。使用域的匹配部分,编写一个重写目标子域 URL 的规则。因此,鉴于您的问题中所述的所需映射,类似以下内容应该可以解决问题:

    RewriteCond %{HTTP_HOST} ^www\.(example[123])\.com$ [NC]
    RewriteRule ^(.*) http://%1.maindomain.com/$1 [L,R]
    

    上面的重写来自例如www.example1.comexample1.maindomain.com。同样,如果您反过来需要它:

    RewriteCond %{HTTP_HOST} ^(example[123])\.maindomain\.com$ [NC]
    RewriteRule ^(.*) http://www.%1.com/$1 [L,R]
    

    这将重写例如example2.maindomain.comwww.example2.com

    【讨论】:

    • 这可以使用通配符来完成吗?类似于: RewriteCond %{HTTP_HOST} ^()\.maindomain\.com$ [NC] RewriteRule ^(.) maindomain.com/$1 [L,R]
    • 上面实际上已经包含了一个“通配符”:RewriteCond 中的主机名模式是一个正则表达式,它匹配www.example1.comwww.example2.comwww.example3.com。您当然也可以使用任何其他正则表达式。为了匹配任何子域,\.maindomain\.com$ 应该这样做(或者,^.*\.maindomain\.com$)。
    • 谢谢!我发现工作的是: RewriteEngine On RewriteCond %{HTTP_HOST} ^(.+)\.domain\.nl$ [NC] RewriteRule ^ domain.nl/?subdomain=%1 [L,R]
    猜你喜欢
    • 1970-01-01
    • 2011-04-29
    • 2023-03-17
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    相关资源
    最近更新 更多