如何使用.htaccess将所有流量重写到子目录以外的子目录?

时间:2012-07-27 08:47:56

标签: .htaccess mod-rewrite url-rewriting rewrite subdomain

所以我使用的托管服务提供商不支持虚拟主机或任何类似的东西,所以我试图将我的主域重写为子目录。例如,我目前有:

example.com重写为example.com/sites/example.com /

使用.htaccess

中的以下代码可以正常工作
Options +FollowSymLinks
RewriteEngine On 
RewriteBase /

RewriteCond %{REQUEST_URI} !^/sites/example.com/.*$
RewriteRule ^(.*)$ /sites/example.com/$1

原因是在同一台服务器上有其他域,我不希望主域可以访问这些域并保持我的服务器有条理。

所以我也将example2.com作为指向/sites/example2.com的附加域,并且工作正常。

但是,我也有子域指向不同的子目录,例如projects.example.com指向/ projects /但这些只是被重写到/sites/example.com/目录。

我的问题是我如何(也可能)解决这个问题?提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果我真的明白,你应该添加主机条件,如果用户在主域 - 他将被重定向。检查一下,我已经修改了一些代码:

Options +FollowSymLinks
RewriteEngine On 
RewriteBase /
#Here we're capturing host name, if it has only one point - this is not subdomain.
RewriteCond %{HTTP_HOST} ^([a-z0-9\-]+\.[a-z]{2,5})$
RewriteCond %{REQUEST_URI} !^/sites/%1/
#Redirecting to the current host name in folder sites
RewriteRule ^(.*)$ /sites/%1/$1 [L]

修改 这不是为域添加正则表达式的优雅决定,它只适用于二级域名,如果你使用像.co.uk这样的域名 - 你必须在RewriteCond %{HTTP_HOST} ^somesite.co.uk$之类的规则中手动添加它们。