所以我使用的托管服务提供商不支持虚拟主机或任何类似的东西,所以我试图将我的主域重写为子目录。例如,我目前有:
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/目录。
我的问题是我如何(也可能)解决这个问题?提前谢谢!
答案 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$
之类的规则中手动添加它们。