/ / перенаправлення 403 помилка з використанням .htaccess - linux, .htaccess, http-status-code-403

Переадресовувати 403 помилку, використовуючи .htaccess - linux, .htaccess, http-status-code-403

Я хочу перенаправити будь-яку 403 за допомогою .htaccess, але це, здається, не працює.

Options +FollowSymlinks

RewriteEngine on
ErrorDocument 403 notfound.html
RewriteRule notfound.html

Вся допомога цінується.

Дякую Жан

Відповіді:

3 для відповіді № 1

URL-адреса директиви ErrorDocument повиннаабо починати з провідної косої риси, яка вказує шлях, який "відносно вашого DocumentRoot", або має бути повною URL-адресою (якщо ви хочете використовувати зовнішній документ).

Тут вам зовсім не потрібні директиви RewriteEngine та RewriteRule.

Отже, якщо припустити, що ваш notfound.html знаходиться на кореневому рівні вашого сайту, ваша директива має виглядати так:

ErrorDocument 403 /notfound.html

3 для відповіді № 2

Я знайшов проблему з попереднього прикладу, який був:

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 тимчасове переадресацію).


-1 для відповіді № 3

Ось дуже простий спосіб зробити це:

Використовуйте цей рядок

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-адреси