Назад | Перейти на главную страницу

Инструкции Apache 410 Gone не работают ни с 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, но это раздражает, и я не понимаю, почему он не работает.

Любые идеи?

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

Итак, решение - добавить в .htaccess следующее:

ErrorDocument 410 default

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

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

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