ошибка перенаправления 403 с использованием .htaccess - PullRequest
3 голосов
/ 26 марта 2011

Я хочу перенаправить любой 403 с помощью .htaccess, но, похоже, он не работает.

Options +FollowSymlinks

RewriteEngine on
ErrorDocument 403 notfound.html
RewriteRule notfound.html

Вся помощь приветствуется.

Ответы [ 3 ]

4 голосов
/ 06 июня 2014

Я обнаружил проблему с более ранним примером, который был:

ErrorDocument 403 /notfound.html

У меня есть каталог на моем сайте, где хранятся изображения, например, на domain.com/images

Я хотел этоесли кто-то попытается получить доступ к URL-адресу каталога, он будет перенаправлен на домашнюю страницу сайта.В связи с вышеизложенным моя проблема заключалась в том, что URL-адрес в браузере будет оставаться domain.com/images, а затем будет загружаться домашняя страница, но домашняя страница будет ссылаться на таблицы стилей, к которым она не сможет получить доступ с этого URL-адреса.(И это имеет смысл - 403 должен показывать сообщение об ошибке).

Затем я попытался исследовать, как перенаправить ошибку 403 на другой URL, и несколько сайтов сказали, что вы не можете сделать 302 или 301 -вы упускаете суть: 403 - это ошибка, а не перенаправление.

Но я нашел способ.Это файл .htaccess, находящийся в каталоге / images:

Options -Indexes
ErrorDocument 403 /images/403.php
RewriteEngine on
RewriteRule ^403.php$ /index.php [R=301]

Таким образом, в основном первая строка предотвращает перечисление каталога.

Во второй строке указывается, что для «разрешение запрещено» (т.е. 403ошибка, которую выдает первая строка), сайт должен загрузить файл "/images/403.php".Но на самом деле вам не нужно создавать какой-либо файл 403.php в этом каталоге, потому что ...

Третья строка включает ваш механизм перенаправления

И четвертая строка говорит, что еслипользователь пытается загрузить страницу 403.php (т. е. в этот каталог "/ images", где находится этот файл .htaccess), затем его следует перенаправить, используя перенаправление 301 (постоянное), в /index.php - который являетсяиндекс корневого каталога (то есть домашней страницы), а не индекс подкаталога / images (и в любом случае в "/ images" нет индекса).

Следовательно - как получить перенаправление 403на другой URL с помощью перенаправления 301 (постоянное) (или вы также можете попробовать временное перенаправление 302).

3 голосов
/ 26 марта 2011

Часть URL-адреса директивы ErrorDocument должна начинаться с начального слеша, указывающего путь относительно вашего DocumentRoot, или полного URL-адреса (если вы хотите использовать внешний документ).

Здесь вам вообще не нужны директивы RewriteEngine и RewriteRule.

Итак, если ваш notfound.html находится на корневом уровне вашего сайта, ваша директива должна выглядеть следующим образом:

ErrorDocument 403 /notfound.html
0 голосов
/ 27 июля 2016

Вот супер простой способ сделать это:

Используйте эту строку

Options -Indexes
ErrorDocument 403 /goaway.html

, где goaway.html содержит следующую строку в разделе заголовка:

<meta HTTP-EQUIV="REFRESH" content="0; url=HERE YOU PUT THE URL YOU ARE REDIRECTING TO" />

И это все ... каждая ошибка 403 попадет в ваш файл goaway.html в корневом каталоге, а goaway.html перенаправит их вURL на ваш выбор

...