【问题标题】:How to get the subdomain and domain in htaccess如何在htaccess中获取子域和域
【发布时间】:2017-04-08 15:55:59
【问题描述】:

例如,我有网址subdomain.example.com

如何从.htaccess 中的 URL 获取 子域

我需要做类似的事情:

RewriteRule (.*) example.com/subdomain/index.php

我为 子域 找到了它,但对于 仍然没有运气。

RewriteCond %{HTTP_HOST} ^(^.*)\.example.com
RewriteRule (.*) example.com/%1/index.php

【问题讨论】:

  • 总是只有 1 个子域和 1 个域吗?或者a.b.c.test.com 可能吗?
  • 只有 1 个子域和 1 个域

标签: apache .htaccess subdomain


【解决方案1】:
RewriteCond %{HTTP_HOST} ^(^.*)\.example.com
RewriteRule (.*) example.com/%1/index.php

同样的原则也适用于域(尽管您在此处使用的 CondPattern 似乎无效?)。看起来您需要域+TLD(基本上是子域之后的所有内容),因此请尝试以下操作:

RewriteCond %{HTTP_HOST} ^(.+?)\.(.+?)\.?$
RewriteRule ![^/]+/[^/]+/index\.php$ %2/%1/index.php [L]

CondPattern(.+?) 部分抓取子域(? 使其不贪婪)。 (.+?) 部分获取域(host 的剩余部分),这也是非贪婪的,以避免匹配完全限定域(例如 subdomain.example.com.)上的可选尾随点。

RewriteRule 模式 ![^/]+/[^/]+/index\.php$ 通过仅在 URL 不是 /<something>/<something>/index.php 的形式时重写来防止重写循环(500 错误)。

【讨论】:

  • 对不起,我匆忙中出现了一些错误!我已经用久经考验的版本更新了我的答案! :)
  • 好的,但还是有问题。我忘了说我有更多的顶级域名,不仅仅是.com。对此感到抱歉。
  • 不客气,我更新了它以使其完全通用。 (另外,第二次更新避免了 FQDN 上的尾随点 - 这是可选的)
  • 非常感谢您抽出宝贵时间 :) 一切正常 :)
猜你喜欢
  • 2010-12-30
  • 2015-11-16
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 2014-07-25
  • 1970-01-01
  • 2021-12-10
相关资源
最近更新 更多