jdo*_*dog 1 redirect virtualhost apache-2.2
我有以下 2 个域记录
website.com 10.0.0.1
www.website.com 10.0.0.1
Run Code Online (Sandbox Code Playgroud)
我有(有)以下 2 个虚拟主机
#note how the IP address is wrong
<VirtualHost 10.0.0.2:80>
ServerName website.com
Redirect / http://www.website.com
</VirtualHost>
<VirtualHost 10.0.0.1:80>
ServerName www.website.com
#note how there is no alias here
DocumentRoot /var/www/www.website.com
<IfModule mpm_itk_module>
AssignUserId www-website www-website
</IfModule>
CustomLog /var/log/apache2/www.website.com-access.log combined
ErrorLog /var/log/apache2/www.website.com-error.log
</VirtualHost>
<VirtualHost 10.0.0.1:443>
ServerName www.website.com
DocumentRoot /var/www/www.website.com
<IfModule mpm_itk_module>
AssignUserId www-website www-website
</IfModule>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/www.website.com
CustomLog /var/log/apache2/www.website.com-ssl-access.log combined
ErrorLog /var/log/apache2/www.website.com-ssl-error.log
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我预计对http://website.com的请求将返回 404。但是它的服务就像是从http://www.website.com传递的一样。为什么?
LazyOne 是完全正确的。只要您NameVirtualHost
整理了指令,就会使用VirtualHost
为请求的IP 地址定义的第一个指令,如果没有其他指令ServerName
或ServerAlias
匹配项存在。
因此,如果您想为每个未命中主机标头匹配的 ip 地址提供 404,请创建一个VirtualHost
(每个 ip)而不使用ServerName
orServerAlias
指令,并将其放置在配置中,以便首先加载。就像是:
<VirtualHost 10.0.0.1:80>
Redirect 404 /
</VirtualHost>
<VirtualHost 10.0.0.2:80>
Redirect 404 /
</VirtualHost>
<VirtualHost 10.0.0.2:80>
ServerName website.com
Redirect / http://www.website.com
</VirtualHost>
<VirtualHost 10.0.0.1:80>
ServerName www.website.com
#note how there is no alias here
DocumentRoot /var/www/www.website.com
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
更新:以下大部分内容来自 apache2 文档,here和here。
主配置文件,通常命名为 httpd.conf,首先加载。但是如果您在基于 debian 的系统上使用二进制包,它很有可能被称为 apache2.conf。使用Include
主配置中的指令添加其他配置文件。Include
允许多次使用该指令。Include
指令可以使用 fnmatch 样式的通配符按字母顺序一次加载多个配置文件。
为了进一步澄清(希望如此),首先加载您的主配置。当Include
遇到指令时,它们会按照它们在主配置中出现的顺序加载。如果个人Include
使用通配符,则匹配的每个配置文件都按字母顺序加载。
在 debian 服务器上,apache2.conf 可能如下所示:
# Include module configuration:
# ...
Include mods-enabled/*.conf
# Include all the user configurations:
Include httpd.conf
# Include ports listing
Include ports.conf
# ...
# Include generic snippets of statements
Include conf.d/
# Include the virtual host configurations:
Include sites-enabled/
Run Code Online (Sandbox Code Playgroud)
换句话说,任何.conf
以 mods-enabled/结尾的文件都在 httpd.conf 之前加载,在ports.conf 之前加载,在 conf.d/ 中的任何文件之前加载,等等。
归档时间: |
|
查看次数: |
344 次 |
最近记录: |