htaccess从%{HTTP_HOST}获取域名到变量中,减去www

问题描述:

我目前在htaccess文件中有以下内容,该文件将某些请求重定向到请求域的单个文件夹(如果文件不存在于根目录中)。htaccess从%{HTTP_HOST}获取域名到变量中,减去www

RewriteRule ^contact/?$ ASSETS/%{HTTP_HOST}/contact.php 

RewriteCond %{REQUEST_URI} !^/ASSETS/%{HTTP_HOST}/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /ASSETS/%{HTTP_HOST}/$1 
RewriteCond %{HTTP_HOST} ^(www.)?%{HTTP_HOST}$ 
RewriteRule ^(/)?$ ASSETS/%{HTTP_HOST}/index.php [L] 

当我的域名文件夹被命名为喜欢的正常工作/ASSETS/www.domain1.com,/ASSETS/www.domain2.com等

不过,我已经建立了很多我的代码已经与假设文件夹将被标记为/ASSETS/domain1.com等(域名,减去www。)

我在想有一种方法可以将%{HTTP_HOST}中的域名转换为一个新变量并去掉www。部分(如str_replace或其他),但我发现的所有答案都围绕基本重定向到www。或者没有www。这是不会工作,因为我仍然希望用户从强制www访问该网站。版。

我之前曾使用RewriteCond%{HTTP_HOST} ^(www。)?domain1.com $单独运行每个域的规则,但现在有很多域,对每个域都做不到。

希望你能帮助!提前致谢。

您可以用RewriteCond捕捉所需要的主机部分和在RewriteRule

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

的地方,我需要的,正则表达式需要一些调整这让我用它作为%1但这个概念是对的.. 工作的正则表达式是 RewriteCond%{HTTP_HOST} ^(?: www \。)?([a-z0-9 - ] + \。[az] +)[NC] – SamSebastian 2013-04-23 22:11:24