我目前在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 $单独运行每个域的规则,但现在有很多域,但每个域都不可行。
希望你能帮忙!提前谢谢。
答案 0 :(得分:11)
您可以使用RewriteCond
捕获所需的主机部分,并将其用作RewriteRule
%1
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
RewriteRule ^$ ASSETS/%1/index.php [L]