我希望请求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错误页面。
这一切让我感到困惑! 是应该怎么做,还是在前两个示例中我做错了什么?
答案 0 :(得分:0)
WidgetTwo
这是我在服务器中设置的内容,目录指令拒绝访问该虚拟主机中的所有文件。并且错误文档403用作消息。其他语法用于错误记录。确保此虚拟主机位于任何其他虚拟主机之前。如果您的服务器上支持HTTPS,则与HTTPS方案类似。