繁体   English   中英

Apache虚拟主机

[英]Apache VirtualHosts

如果apache的域名为origin.datingasia.co,它是否与VirtualHost条目下面的内容匹配?

<VirtualHost *:80>
    ServerName datingasia.co
    ServerAlias www.datingasia.co
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*) http://www.%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html/datingasia.co
    ServerName origin.datingasia.co
    ServerAlias origin.datingasia.co
</VirtualHost>

同样,一旦域应用了重写规则,例如:是否添加了“ http://www.etc.etct”,它会自动重定向吗? 在使用DocumentRoot路径之前会发生这种情况吗?

域“ origin.datingasia.co”将仅触发第二个条目。 如果希望第一个也触发它,则需要添加第二个ServerAlias参数。

ServerAlias origin.datingasia.co

由于您的第二个条目包含相同的ServerAlias,因此这将导致问题。 所有ServerName / ServerAlias必须唯一,否则Apache将不知道用于请求的块。

第一个条目将仅捕获对“ datingasia.co”和“ www.datingasia.co”的请求。 但是,如果不满足重写规则条件(IE:www.datingasia.co),您将丢失DocuemntRoot。 一旦您的请求进入www.datingasia.co页面,这将导致您的请求失败,因为Apache不知道从哪个根目录提供请求。 当他们访问“ datingasia.co”时,浏览器将自动重定向到“ www.datingasia.co”。

对于第二个条目,由于您已经在ServerName中定义了该域,因此不需要“ ServerAlias origin.datingasia.co”。 如果您想要一个额外的唯一域指向该主机(IE:ServerAlias www.origin.datingasia.co),则只需要ServerAlias行。

由于您的重写规则位于主机中,因此如果满足条件,Apache将不需要DocumentRoot。 但是,如果不满足该条件,Apache将尝试处理该请求,因此将需要DocumentRoot。 您的规则会将“ datingasia.co”转发到“ www.datingasia.co”,但在“ www.datingasia.co”将失败,因为它缺少DocumentRoot并且不符合RewriteCond。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM