如何添加一个子域.htaccess指向根目录外的文件夹

时间:2012-11-02 20:29:23

标签: .htaccess dns

我希望有一个子域指向普通公共根文件夹之外的文件夹。

httpdocs/
sub_dom/

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

  1. 这是可能的
  2. 是否有更好的解决方案(例如,以另一种方式更好/更可行)
  3. 目前htaccess文件包含此内容,但似乎没有这个诀窍:

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

    第二行可能有一些非常错的可能吗?

1 个答案:

答案 0 :(得分:1)

  

这是可能的

它是在vhost或服务器配置中。除非您已经可以通过常规域访问/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,它也会实现同样的目标。