【问题标题】:how to add a sub domain .htaccess pointing to a folder outside the root如何添加指向根目录外文件夹的子域.htaccess
【发布时间】:2012-10-23 13:09:40
【问题描述】:

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

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]

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

【问题讨论】:

    标签: .htaccess dns


    【解决方案1】:

    这可能吗

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

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

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

    ServerName domain.com
    ServerAlias www.domain.com
    

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

    ServerName admin.domain.com
    

    还有一个:

    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,它会达到同样的效果。

    【讨论】:

    • 这正是我想要的。我知道vhosts 是将子域指向外部根的解决方案。我刚刚意识到alias也可以做到这一点。
    • 我正在使用共享主机计划,但不确定在 cpanel 中的何处设置这些替代方案 - 或者即使我可以。其次,您写道将 /sub_dom/ 移动到 httpdocs 将实现相同的目的 - 但那不会使这些文件夹/文件可以从两个 URL 访问吗? admin.domain.com 和 domain.com/admin ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 2013-11-22
    • 1970-01-01
    • 2023-03-07
    • 2012-04-21
    • 2011-08-05
    • 2017-01-29
    相关资源
    最近更新 更多