.htaccess将URL重写为与域相同的目录

时间:2014-06-18 22:18:49

标签: apache .htaccess mod-rewrite

我有一个域名列表,这些域名都指向相同的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执行此操作?

2 个答案:

答案 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]