【问题标题】:Redirect wildcard subdomain without known domain - htaccess重定向没有已知域的通配符子域 - htaccess
【发布时间】:2019-01-14 14:53:51
【问题描述】:

当顶级域名未知时,通过 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]

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

【问题讨论】:

  • 对于任何 500 错误首先要检查的是 Apache 错误日志的相关部分

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


【解决方案1】:

我对您提供的代码做了一些小改动:

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

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

确保在测试之前清除缓存。

【讨论】:

  • 谢谢。这几乎是完美的。除非它最终取消了 .com 或 .net。你能修改你的答案以使用RewriteRule ^(.*)$ https://%2\.%3/$1 [L,R](注意%3)然后我会接受吗?
  • 嘿@Terry,我已经进行了编辑。我很高兴能帮您指出正确的方向:)
  • 我只是回顾了一下,不敢相信我错过了 URL 上的 .com.... xD 哈哈 - 在进行更改时一定有一点狭隘的眼光。跨度>
猜你喜欢
  • 2018-08-14
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 2013-11-12
相关资源
最近更新 更多