重写子域的规则

时间:2016-09-19 13:09:52

标签: apache .htaccess url-rewriting subdomain

是否可以使用.htaccess为子域指向主域上的文件? 我将example.com作为主域并通过DirectAdmin创建了子域:one.example.com,two.example.com等。子域应该指向主域上的app.php,但是子域应该保留在url中。

因此导航到one.example.com应指向app.php,该app.php位于主域example.com中,但网址仍应显示one.example.com

我已经查看并尝试了.htaccess rewrite subdomain to directory和其他地方发现的大量重写规则。 目前我在子域的子文件夹中的.htaccess文件中有这个重写规则:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com
RewriteRule ^(.*)$ http://example.com/app.php$1 [L,NC,QSA]

这会重定向并将网址更改为example.com/app.php,而我希望网址显示子网域:one.example.com/whatever

是否可以使用.htaccess执行此操作,或者甚至可能有更好的方法来执行此操作?

1 个答案:

答案 0 :(得分:0)

在另一台服务器上有目标的RewriteRule将始终执行重定向

  

绝对网址
      如果指定了绝对URL,mod_rewrite 将检查主机名是否与当前主机匹配。如果是,则删除方案和主机名,并将生成的路径视为URL路径。 否则,将对给定的网址执行外部重定向。要强制外部重定向回到当前主机,请参阅下面的[R]标志。

要将网址http://example.com/app.php映射到您的子域名而不重定向,您可以尝试P|proxy标记

RewriteRule ^(.*)$ http://example.com/app.php/$1 [P,QSA]

还记住最后一点

  

注意:必须启用mod_proxy才能使用此标志。

通常,这可以通过

来完成
a2enmod proxy proxy_http

如果目标网址为https://...,您还必须启用mod_proxy_connect,并使用SSLProxyEngine

在主要或虚拟主机配置中激活SSL
SSLProxyEngine on

根据您的需要,ProxyPass也可能是一个可行的解决方案。