我有2个虚拟主机,它们正在查看/var/www/site1 (ServerName site1 )和/var/www/site2 (ServerName site2 )。 我想通过在默认configuration( 000-default.conf )中设置一个重写规则来使我的站点不能被http://1.2.3.4/site1或http://1.2.3.4/site2使用:
RewriteEngine On RewriteCond %{HTTP_HOST} ^1\.2\.3\.4 RewriteRule (.*) http://test.com/$1 [R=301,L]
但网站仍然可以在http://1.2.3.4/site1和http://1.2.3.4/site1 (虽然redirect工程http://1.2.3.4/ )。
我究竟做错了什么?
尝试这个:
RewriteRule ^(.*)$ http://test.com/$1 [R=301,L]
有一件事我无法理解你描述你的设置的方式:
http://1.2.3.4/site1应该返回一个404。 和
http://1.2.3.4/site2应该返回一个404。 但是这可能有助于:
该文件说:
默认情况下,主服务器上下文中的
mod_rewriteconfiguration设置不会被虚拟主机inheritance。 要使主服务器设置适用于虚拟主机,必须在每个<VirtualHost>部分放置以下指令:
RewriteEngine On RewriteOptions Inherit
所以,我的build议是为每个<VirtualHost>定义RewriteOptions Inherit 。