htaccess自动检测域名

时间:2013-10-17 12:51:03

标签: regex apache .htaccess mod-rewrite

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

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获取/匹配当前网址中的当前域?

可能需要将域名作为变量

谢谢

2 个答案:

答案 0 :(得分:2)

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

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

所以前者;使用http://www.sub.domain.com之类的网址,它会捕获sub变量中的%1domain.com变量中的%2

答案 1 :(得分:0)

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

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