我想知道如何允许一个页面成为403页面而其他页面被禁止。这是我在我的.htaccess
文件中尝试的但它没有用 - 它没有显示我使用ErrorDocument
设置的403页。
ErrorDocument 404 /404.php
ErrorDocument 403 /403.php
Order deny,allow
Deny from all
Allow from 203.0.113.111
答案 0 :(得分:1)
您可以使用<Files>
指令(稍后处理)指定允许的文件。例如:
Order Deny,Allow
Deny from all
Allow from 203.0.113.111
<Files "403.php">
Allow from all
</Files>
要指定两个错误文档,可以使用带有正则表达式的<FilesMatch>
指令:
<FilesMatch "^40[34]\.php$">
Allow from all
</FilesMatch>
或者,您可以使用否定前瞻将阻止指令仅应用于无错误文档。例如:
<FilesMatch "^(?!40[34]\.php$).*$">
Order Deny,Allow
Deny from all
Allow from 203.0.113.111
</FilesMatch>
另见anubhava对这个问题的回答:
htaccess regex for all except some filetypes
另一种方法是使用mod_rewrite而不是mod_authz_host
例如:
ErrorDocument 404 /404.php
ErrorDocument 403 /403.php
RewriteEngine On
# Exception for error documents
RewriteRule ^40[34]\.php$ - [L]
# Forbid all other requests, except those from IP address
RewriteCond %{REMOTE_ADDR} !=203.0.113.111
RewriteRule ^ - [F]