重定向通配符子域,而没有已知域-htaccess

时间:2018-08-07 13:32:25

标签: apache .htaccess http-status-code-301

当顶级域名未知时,通过htaccess重定向的合适方法是什么?

我的具体情况是...我们公司有一个自定义的内容管理系统,该系统在我们的多台服务器上使用。每个服务器为该服务器上的每个客户都有一个子域。

  • customerBob.exampleA.com
  • customerLarry.exampleA.com
  • customerJudy.exampleB.com
  • customerAlice.exampleB.com

我们有许多服务器,每个服务器托管一组客户。子域完全没有必要,因为客户已经可以从顶级域访问其帐户。它只会使支持变得更加复杂,帮助文件变得更加混乱。

我们希望消除所有子域,并将子域重定向到主域。

因此,如果有人访问:customerBob.exampleA.com/test.php->应该将其定向到-> exampleA.com/test.php。

我想通配顶级域名。我在htaccess重定向中看到的所有示例都显示了目标中指定的example.com。我可以在不知道该顶级域是什么的情况下重定向到顶级域吗?

这是有人想出的代码,但完全失败了,这时我得到了500:

RewriteEngine On RewriteCond %{HTTP_HOST} ^([^/.]+)\.(*)\.(*)$ RewriteRule (.+)$ "/%1" [L,P]

我认为这是可行的,因为存在许多可能需要这样做的内容管理系统,谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我对提供给您的代码进行了小改动:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^/.]+)\.(.*)\.(.*)$ [NC] 
RewriteRule ^(.*)$ https://%2\.%3/$1 [L,R]

对我来说,这是返回http://exampleA.com/test.php。我明确地重写为http。如果您使用SSL,则可能需要更改此设置。

在测试之前,请确保清除缓存