【问题标题】:htaccess automatically detect domain namehtaccess 自动检测域名
【发布时间】:2013-10-25 23:23:33
【问题描述】:

我制作了自动创建子域的脚本。

htaccess 工作正常, 但问题是,在新域上安装时需要手动更改域名

我想在htaccess中自动检测域名,可以吗?

所以在添加另一个服务器或新域时,无需再次更改域根 htaccess

域根 htaccess 是:

RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9][-a-z0-9]+)\.mydomain\.com(:80)?$ [NC]
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com

我尝试自动更改从%{HTTP_HOST}获取

RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9][-a-z0-9]+)\.%{HTTP_HOST}(:80)?$ [NC]
RewriteCond %{HTTP_HOST} !^www\.%{HTTP_HOST}

问题出在%{HTTP_HOST}, 如何使用 htaccess 获取/匹配当前 url 中的当前域?

可能需要获取域名作为变量

谢谢

【问题讨论】:

  • 请发布输入 HTTP 请求域的示例以及应该重定向到的内容,因为您现在拥有的内容与将 %{HTTP_HOST} 匹配为更大域的子字符串并不完全有意义包含%{HTTP_HOST]
  • 谢谢,使用原始 htaccess 更新并尝试使用 {HTTP_HOST}
  • @Andy:贴一些这些子域名的例子,你想捕获什么?
  • @anubhava: 实际上我只是想让 root htacess 自动获取域名作为变量,这样我就可以用来替换 mydomain\.com

标签: regex apache .htaccess mod-rewrite


【解决方案1】:

我相信这个RewriteCond 应该适合你:

RewriteCond %{HTTP_HOST} ^(?:www\.)?((?!www\.)[^.]+)\.([^.]+\.[^.]+)$ [NC]

所以对于前;使用像http://www.sub.domain.com 这样的URL,它将在%1 变量中捕获sub,在%2 变量中捕获domain.com

【讨论】:

  • 如何抓取 domain.com?
  • 所以你想从www.sub.domain.comsub.domain.com捕获domain.com
  • 是的,是否可以同时捕获subdomain.com?主要目的是,在另一个域中设置时,我不会手动更改 htaccess 中的域。谢谢
  • 谢谢!,现在我可以同时获得两个 var,但是在正则表达式中使用 RewriteCond %{HTTP_HOST} !^www\.mydomain\.com 替换此代码时,RewriteCond %{HTTP_HOST} !^www\.%1 不起作用,因为正则表达式未读取 %1.. 或 %2
  • 是的,不要使用%{HTTP_HOST} 设置另一个条件如果您在问题中清楚地解释了您尝试使用您尝试的代码做什么,那么我可以提出一些建议。
【解决方案2】:

除了anubhava的回答,如果您需要在%3中捕获domain.com之后的其余url,您可以使用以下RewriteCond

RewriteCond %{HTTP_HOST} ^(?:www\.)?((?!www\.)[^.]+\.)?([^/.]+\.[^/.]+)/?([^/]+)?$ [NC]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-18
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2015-06-15
    相关资源
    最近更新 更多