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