1

我想要一个指向普通公共根文件夹之外的文件夹的子域。

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]

第二行很可能有什么问题?

4

1 回答 1

1

这可能吗

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

是否有更好的解决方案(例如,以另一种方式做会更好/更可取)

正确的做法是创建一个新的虚拟主机。您的旧虚拟主机应该具有类似这样的服务器名称:

ServerName domain.com
ServerAlias www.domain.com

在您的新虚拟主机中,您有:

ServerName admin.domain.com

还有一个:

DocumentRoot /path/to/sub_dom/

Apache 文档有一个设置 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,它会达到同样的效果。

于 2012-11-02T21:04:35.727 回答