#.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, но я забыл скопировать это. Но в любом случае это не имеет никакого смысла.