我有一个.haccess文件,要求您确实要从某个IP地址进行访问:
<RequireAll>
Require ip XX.XX.XX.XX.XX YY.YY.YY.YY.YY ZZ.ZZ.ZZ.ZZ.ZZ
</RequireAll>
如果有人尝试通过X,Y或Z以外的IP访问该网站,那么他们将得到一个错误403 Forbidden
页面。我使用以下方法自定义了它:
ErrorDocument 403 /.forbidden.php
如果有人尝试访问同一目录中的受限制文件(即使它们来自ip地址X,Y或Z),那么他们会再次提示您具有SAME自定义403 Forbidden
页面。
如何403 Forbidden
基于禁止访问的原因来创建两个不同的自定义页面?在示例1中,禁止页面将/.wrongip.php
在示例2中显示/.restricted.php
如果这是关于您正在执行的操作的范围,那很好,但是如果您将要进行大量重定向,我会考虑在PHP中执行此操作,但我偏离了方向。您将必须使用Apache(2.4)模块mod_rewrite来重写IP限制部分的规则和条件。我将保留您的自定义“ 403禁止访问”,以便处理该状态码的其他情况。如果您在共享主机上,则默认情况下,大多数托管服务提供商通常会启用此模块。
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^111.222.333.444$
RewriteRule ^(.*)$ /.wrongip.php [L]
如果您在.htaccess
文件顶部附近继续重写规则,则可能会避免混淆。您只需RewriteEngine On
在文件中使用该行一次。RewriteCond
是紧随其后的规则的条件之一。您可以将多个条件映射到单个规则(使用[OR]标志;默认情况下,AND行为)。
在此解决方案中,^
字符指示字符串的开头。同样,$
表示结束。因此,^(.*)$
是一个通配符,它将匹配您服务器上访问的任何文件。在单个空格分隔符之前,该/.wrongip.php
部分表示要重定向到的自定义错误页面。[L]
是用于指示Apache服务器一旦匹配其他规则即应停止处理其他规则的标志。除非您使用多个规则来构造单个URL,否则请使用此选项,否则可能会令您头痛。
还有一个标志,[R]
我建议您注意并尝试使用它,以便更轻松地维护HTTP响应代码的良好实践。这些对搜索排名有帮助,我建议您指定403响应,因为默认情况下它将引发302错误,这会随着时间的推移对排名产生负面影响。将规则更改为RewriteRule ^(.*)$ /.wrongip.php [R=403,L]
将导致Apache服务器向浏览器发出HTTP重定向(到/.wrongip.php),并在标头中传达403 Forbidden错误。由于我的示例将所有页面重定向到/.wrongip.php的非白名单IP,最有可能甚至重定向到/.wrongip.php本身,因此我认为在您的特定情况下,[R]
标志将导致HTTP重定向循环,在该循环中,它们将继续请求/.wrongip.php。在这种情况下,您应该省略该[R]
标志,这将导致Apache服务器执行内部重定向。
如果没有该[R]
标志,则客户端将不会知道此重定向正在进行(因此是internal),因此您仍然应该使用PHP在/.wrongip.php文件的标题中模拟错误代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句