我有一个域名列表,这些域名都指向相同的IP地址,我希望能够动态地重写网址以转到基于域名的文件夹。
例如,我希望coolsite.com/blah.php
指向/coolsite/blah.php
。
我的.htaccess文件中有以下内容,但它不起作用
#Capture the domain without the 'www' or '.com'
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)\.com
#if the request hasn't been rewritten to the new folder
RewriteCond %{REQUEST_URI} !^/%1
#Rewrite request so that it inserts that folder in the path
RewriteRule ^(.*)$ /%1/$1 [L]
我知道我可以在我的httpd.conf中制作一堆VirtualHost
,但我正在使用大量的域名。
是否可以使用mod_rewrite执行此操作?
答案 0 :(得分:0)
您无法在%1
的RHS上使用RewriteCond
。
你的规则如下:
RewriteCond %{HTTP_HOST}::%{REQUEST_URI} ^(?:www\.)?(.+?)\.com::(?!\1).+$
RewriteRule ^(.*)$ /%1/$1 [L]
答案 1 :(得分:0)
我终于找到了答案here。
正如anubhava所说,你不能在RewriteCond
的RHS中使用反向引用,但你可以在LHS中使用它。
我的最终代码是:
RewriteCond %{SERVER_NAME} (?:www\.)?(.+?)\..+$
RewriteCond %1::%{REQUEST_URI} !^(.*?)::/\1/
RewriteRule ^(.*)$ /%1/$1 [L]