如何将subdomain和subsubdomain重写为参数?

时间:2017-02-16 01:34:49

标签: apache mod-rewrite subdomain

任何人都可以帮助apache进行以下重写吗?

想象一下,我有域domain.com

我想要的是什么:

  

如果有人要求www.domain.com,请返回www.domain.com(即   我的根目录中的index.php)

     

如果有人请求subA.subB.domain.com然后返回   www.domain.com?sub=subA.subB

     

如果有人请求sub.domain.com,请返回www.domain.com?sub=sub

     

如果有人请求domain.com,请返回www.domain.com

我知道这里的规则就是自己动手。我有。例如,类似的问题here要求重定向到/ subA / subB - 但即使我理解了答案,我也不知道如何使其适应我所需要的,即sub = subA.subB。多年来,我试图多次理解重写。好的,/ sobstory -off。

1 个答案:

答案 0 :(得分:0)

这将重写您的子域名:

RewriteEngine on
RewriteCond %{QUERY_STRING} !^sub=
RewriteCond %{HTTP_HOST} ^(?!www\.)(.+)\.domain\.com$
RewriteRule ^(/?)$ $1?sub=%1

根据需要替换域。确保每个.之前都有一个斜杠。

它仅适用于索引页面。如果您希望在domain.com/之后有某些内容让我知道,那么它就可以正常工作。

至于使http://domain.com工作,我建议将其重定向到www.domain.com,这样您就不会从搜索引擎中获得重复的内容问题。这样做(在上面添加它):

RewriteCond %{HTTP_HOST} =domain.com
RewriteRule ^ http://www.domain.com%{REQUEST_URI} [R=301,L]

在那个点之前不需要斜线。

如果有任何对你不利的事,请告诉我。

原创海报的后记基于评论:

上述解决方案对于该问题是正确的,但在服务器上采用以下配置:

  • 已添加子域* .domain.com并指向该站点的文档根目录
  • * .domain.com的'A记录'已在DNS配置中配置并指向服务器的IP地址