2012-11-02 63 views
1

我想拥有一个指向正常公用根文件夹外的文件夹的子域。如何添加子域.htaccess指向根外的文件夹

httpdocs/ 
sub_dom/ 

所以说“admin.domain.com”指向“sub_dom”,而“domain.com”指向常规的httpdocs文件夹。

  1. 这可能
  2. 有没有更好的解决方案(例如它会更好/更明智的做另一种方式)

目前htaccess的文件包含了这一点,但它似乎没有要做的伎俩:

RewriteCond %{HTTP_HOST} ^admin\.domain\.com$ 
RewriteRule ^/(.*) /var/www/vhosts/domain.com/sub_dom/admin/ [redirect,last] 

有可能是第二行可能是非常错误的?

回答

1

这可能

它是在虚拟主机或服务器配置。除非您已经可以通过常规域访问/sub_dom/目录,否则无法使用htaccess文件。您无法使用您的htaccess文件访问文档根目录以外的任何目录

有没有更好的解决方案(例如,它会更好/更明智的做另一种方式)

正确的方式做到这一点是创建一个新的虚拟主机。您的旧的虚拟主机应该有服务器名称是这样的:

ServerName domain.com 
ServerAlias www.domain.com 

在新的虚拟主机,你必须:

ServerName admin.domain.com 

和a:

DocumentRoot /path/to/sub_dom/ 

Apache documentation has a tutorial for setting up vhosts

或者,您可以从常规的域创建别名,像:

Alias /sub_dom /path/to/sub_dom 

然后你就可以在您的domain.com文档根目录(httpdocs资料)使用mod_rewrite:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^admin\.domain\.com$ [NC] 
RewriteCond %{DOCUMENT_ROOT}/sub_dom%{REQUEST_URI} -f [OR] 
RewriteCond %{DOCUMENT_ROOT}/sub_dom%{REQUEST_URI} -d [OR] 
RewriteCond %{DOCUMENT_ROOT}/sub_dom%{REQUEST_URI} -s 
RewriteRule^/sub_dom%{REQUEST_URI} [L] 

但,你也可以将/sub_dom/转换成httpdocs,它会达到同样的效果。

+0

谢谢,我会给这个前 –

+0

这正是我所看到的。我知道'vhosts'是将子域指向外部根的解决方案。我只是意识到它也可以用'alias'完成。 – hyip

相关问题