我希望有一个子域指向普通公共根文件夹之外的文件夹。
httpdocs/
sub_dom/
所以说“admin.domain.com”指向“sub_dom”而“domain.com”指向常规的httpdocs文件夹。
目前htaccess文件包含此内容,但似乎没有这个诀窍:
RewriteCond %{HTTP_HOST} ^admin\.domain\.com$
RewriteRule ^/(.*) /var/www/vhosts/domain.com/sub_dom/admin/ [redirect,last]
第二行可能有一些非常错的可能吗?
答案 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
,它也会实现同样的目标。