0

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

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/ 目录。

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

4

1 回答 1

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$.

于 2012-07-27T10:47:17.033 回答