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, попробуйте сначала отключить их.