很多网友使用Apache主机的时候都会自己定义403和404信息主页。然后在 .htaccess
文件中进行设置。如下面这种:
<Files 403.shtml> order allow,deny allow from all </Files> deny from 5.0.0.0/8 ErrorDocument 403 /403.shtml
上述是不采用CDN加速时候对某IP地址段进行限制访问。
但是如果使用 CDN 加速,则需要使用 RewriteCond %{HTTP:X-FORWARDED-FOR} ^5\. [NC]
这种形式的写法。这个已在以前文章中写过,这里不赘述。然后 .htaccess
中使用下面的代码:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:X-FORWARDED-FOR} ^5\. [NC] RewriteRule ^(.*)$ - [F,L] </IfModule> ErrorDocument 403 /403.shtml
但是上述情况经常会出现一个问题,就是自定义的 403.shml 文件并没有起作用,而还是显示系统自带的 403 提示信息。而且,下面还多出一行文字:
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
这行信息告诉我们:你的 403 页面设置过程中出现了问题,使用 ErrorDocument
没有成功。这个并不是什么权限和目录的问题,而是网友忽略了一个重要原因:403.shml 文件也被禁止了,用户无法获取该文件。这才是导致上述信息的原因。所以,设置的时候应该把该文件排除在禁止行列之外,才能调用该文件进行重写。
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利
.htaccess
文件中代码应该这样设置:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !403\.shtml$ [NC] RewriteCond %{HTTP:X-FORWARDED-FOR} ^5\. [NC] RewriteRule ^(.*)$ - [F,L] </IfModule> ErrorDocument 403 /403.shtml
这样就不会出现上述 a 403 Forbidden error was encountered 的提示信息了。
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利