перенаправление 403 не работает

#.htaccess #http-status-code-403

#.htaccess #http-status-code-403

Вопрос:

Как заставить apache перенаправлять на ошибку 403?
Я пытался:

 RewriteRule ^forbid/(.*)$ / [R=403,L] 
  

это вызвало ошибку сервера 500 на всем сайте

 RewriteRule ^forbid/(.*)$ - [R=403,L] 
  

и

 RewriteRule ^forbid/(.*)$ [R=403,L] 
  

это просто не работает

У меня есть следующий файл .htaccess:

 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]
  

Пожалуйста, помогите мне!

Ответ №1:

Попробуйте это вместо:

 RewriteRule ^forbid/(.*)$ - [F]
  

Источник:http://httpd.apache.org/docs/current/rewrite/flags.html#flag_f

Комментарии:

1. Ага. Перенаправления выполняются только в 3xx диапазоне кода, 403 Forbidden это ошибка клиента, а не перенаправление.

Ответ №2:

Если у вас не RewriteBase определено, чего мы не видим в ваших правилах, я думаю, вы не хотите, чтобы ^ перед вашим выражением ‘forbidd’ стояло ‘запретить’, поскольку технически оно начиналось бы с ‘/’

 RewriteRule ^forbid/(.*)$ - [R=403,L]
# Instead try
RewriteRule ^/forbid/(.*)$ - [R=403,L]
# Or
RewriteRule forbid/(.*)$ - [R=403,L]
  

Комментарии:

1. на самом деле, у меня есть RewriteBase, но я забыл скопировать это. Но в любом случае это не имеет никакого смысла.