如何将subdomain和subsubdomain重写成一个参数?

How to rewrite subdomain and subsubdomain into a parameter?

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

假设我有域 domain.com

我想要的:

If people request www.domain.com then return www.domain.com (ie index.php in my root directory)

If people request subA.subB.domain.com then return www.domain.com?sub=subA.subB

If people request sub.domain.com then return www.domain.com?sub=sub

If people request domain.com then return www.domain.com

我知道这里的规则是自己动手。我有。例如,类似的问题 here 要求重定向到 /subA/subB - 但即使我理解了这个答案,我也不知道如何根据我的需要调整它,即 ?sub=subA.subB 。多年来,我曾多次尝试理解重写。好的,/sobstory -off.

这将重写您的子域:

RewriteEngine on
RewriteCond %{QUERY_STRING} !^sub=
RewriteCond %{HTTP_HOST} ^(?!www\.)(.+)\.domain\.com$
RewriteRule ^(/?)$ ?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 并指向站点的文档根目录
  • 一个'A record' for *.domain.com已经在DNS配置中配置并指向服务器的IP地址