Apache 2.4-拒绝直接IP访问并显示自定义错误页面

时间:2018-08-19 15:35:36

标签: apache virtualhost

我希望请求http://example.com服务我的网站,并请求http://123.123.123.123显示自定义的403错误页面。

我的Ubuntu服务器上正在运行Apache / 2.4.29。

/etc/apache2/sites-available/vhosts.conf

<VirtualHost *:80>
    ServerName default
    <Location />
        Require all denied
    </Location>
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        Options None
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

/etc/apache2/conf-available/security.conf

Alias /errors/ "/var/www/html/error-pages/"
ErrorDocument 401 /errors/401.php
ErrorDocument 403 /errors/403.php
ErrorDocument 404 /errors/404.php
ErrorDocument 500 /errors/500.php

<Directory /var/www/html/error-pages>
    Require all granted
</Directory>

使用上述设置,直接IP访问被阻止,但是未显示我的自定义错误页面。

  

禁止访问:您无权访问此服务器上的/。   此外,尝试执行403禁止错误时   使用ErrorDocument来处理请求。


然后我尝试使用指令代替:

<VirtualHost *:80>
    ServerName default
    <Directory />
        Require all denied
    </Directory>
</VirtualHost>

现在所有子目录(例如http://123.123.123.123/sub)都显示我的错误页面,但不幸的是根本没有阻止根目录并显示了我的index.php页面。


我的下一个猜测是尝试使用通配符:

<VirtualHost *:80>
    ServerName default
    <Location "/*">
        Require all denied
    </Location>
    <Location "/*/">
        Require all denied
    </Location>
</VirtualHost>

此代码有效,并在根目录以及所有子目录上显示我自己的403错误页面。

这一切让我感到困惑! 是应该怎么做,还是在前两个示例中我做错了什么?

1 个答案:

答案 0 :(得分:0)

WidgetTwo

这是我在服务器中设置的内容,目录指令拒绝访问该虚拟主机中的所有文件。并且错误文档403用作消息。其他语法用于错误记录。确保此虚拟主机位于任何其他虚拟主机之前。如果您的服务器上支持HTTPS,则与HTTPS方案类似。