2013-10-17 161 views
2

我做了自动创建子域的脚本。htaccess自动检测域名

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 /匹配当前域?

也许需要得到域名作为变量

谢谢

+0

请张贴输入HTTP请求的域的一个例子,它应该是什么重定向到,因为你现在不知道匹配'%{HTTP_HOST}'作为一个更大的域的子字符串,它也包含'%{HTTP_HOST]' –

+0

谢谢,用原始htaccess更新并尝试使用{HTTP_HOST } – Andy

+0

@Andy:发布这些子域名的一些例子,你想捕获什么? – anubhava

回答

2

我相信这应该RewriteCond为你工作:

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

因此,对于前;与一个URL如http://www.sub.domain.com它将捕获在%1变量和domain.com%2变量。

+0

如何捕获domain.com? – Andy

+1

所以你想从'www.sub.domain.com'或'sub.domain.com'获取'domain.com'? – anubhava

+0

是的, 也可以同时捕获'sub'和'domain.com'? 的主要目的是,当在另一个域中设置时,我不会在htaccess中手动更改域。 谢谢 – Andy

0

除了anubhava的答案,如果您需要捕获的URL的其余domain.com%3,你可以使用下面的RewriteCond

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