Apache限制/ var / www子目录访问

我有2个虚拟主机,它们正在查看/var/www/site1 (ServerName site1 )和/var/www/site2 (ServerName site2 )。 我想通过在默认configuration( 000-default.conf )中设置一个重写规则来使我的站点不能被http://1.2.3.4/site1http://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/site1http://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