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

时间:2013-04-22 23:53:55

标签: .htaccess mod-rewrite

我目前在htaccess文件中有以下内容,如果根目录中不存在该文件,则会将某些请求重定向到请求域的单个文件夹。

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 $单独运行每个域的规则,但现在有很多域,但每个域都不可行。

希望你能帮忙!提前谢谢。

1 个答案:

答案 0 :(得分:11)

您可以使用RewriteCond捕获所需的主机部分,并将其用作RewriteRule

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