Apache 410 Унесенные инструкции не работают ни с mod_alias, ни с mod_rewrite

Apache 2.2 (на сервере под управлением cPanel), похоже, игнорирует инструкции по возвращению статуса 410.

Это происходит для обоих редиректов mod_alias (используя 410 или же gone) и RewriteRule mod_rewrite (используя [G]), используется внутри файла.htaccess.

Это работает:

Redirect 302 /somewhere /gone

Но это не так:

Redirect 410 /somewhere

Эта строка игнорируется (как если бы она была прокомментирована), и запрос переходит к другим правилам (которые направляют его на несвязанный общий сценарий обработки ошибок).

Точно так же попытка использовать RewriteRule с флагом [G] не работает, но то же правило переписывается в сценарий, который генерирует 410, - так что правила не проблема, и вместо этого кажется, что что-то около 410 / ушел, что не ведет себя.

Я могу обойти это, имея скрипт для отправки 410, но это раздражает, и я не понимаю, почему он не работает.

Есть идеи?

2 ответа

Решение

Кажется, в cPanel есть ошибка - для вступления в силу 410 требуется явный ErrorDocument.

Итак, решение заключается в добавлении следующего к.htaccess:

ErrorDocument 410 default

Это затем позволяет [G] работать для RewriteRule. (Еще не проверили, что Redirect также исправлен.)

Источник: http://wordpress.org/support/topic/410-errors-returning-404-pages

Что вы имеете в виду, говоря, что это не работает, какой код состояния возвращается? Если вы используете сторонние модули apache, попробуйте сначала отключить их.

Другие вопросы по тегам