问题
How to force apache to redirect to a 403 error?
I've tried:
RewriteRule ^forbid/(.*)$ / [R=403,L]
this caused 500 server error on the whole site
RewriteRule ^forbid/(.*)$ - [R=403,L]
and
RewriteRule ^forbid/(.*)$ [R=403,L]
these simply don't work
I have the following .htaccess file:
RewriteEngine on
RewriteRule ^(config|backup)(.*)$ - [F] [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/(.*)$ /admin/index.php?%{QUERY_STRING} [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !util
RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L,QSA]
Please, help me!
回答1:
Try this instead:
RewriteRule ^forbid/(.*)$ - [F]
Source: http://httpd.apache.org/docs/current/rewrite/flags.html#flag_f
回答2:
Unless you have a RewriteBase
defined that we don't see in your rules, I think you don't want the ^
before 'forbid' your expression, since it would technically start with '/'
RewriteRule ^forbid/(.*)$ - [R=403,L]
# Instead try
RewriteRule ^/forbid/(.*)$ - [R=403,L]
# Or
RewriteRule forbid/(.*)$ - [R=403,L]
来源:https://stackoverflow.com/questions/6032059/403-redirect-doesnt-work