Помощь по mod_rewrite необходима для кода состояния 410 - PullRequest
0 голосов
/ 20 августа 2011

Я хочу отправить код статуса 410, если в URL есть ?.Поскольку сайт работает только с URL-адресами с поддержкой SEO (например, www.domain.com/seo-enabled-urls).

При поддержке сообщества StatckOverflow было сделано перенаправление 301, которое прекрасно работает:

RewriteBase /
RewriteRule ^romance-package-two\.html$ http://www.domain.com/wedding-champagne [QSA,NC,R=301,L]

Точно так же, как яЯ хочу добавить код сообщения 410, который сообщит Google (например, поисковым системам) об окончательном удалении, поэтому у нас не будет проблем с SEO неизвестными или не найденными URL.

Если URL выглядит следующим образом

www.domain.com/seo-enabled-urls?param1=val1&param2=val2

Я хочу сохранить тот же URL, но только с этим кодом 410, как этот

RewriteCond %{query_string} ^(.*&)?$ [NC]
RewriteRule ^1$  same url code [QSA,NC,R=410,L]

Пожалуйста, помогите мне.

Ответы [ 2 ]

3 голосов
/ 17 октября 2013

Принятый ответ больше не является верным, по крайней мере, в то время, когда Apache 2.0, где mod_rewrite поддерживает цель 410 GONE:

'пошел | G' (принудительно пропустить URL). Это заставляет текущий URLчтобы быть пропущенным - он немедленно отправляет обратно HTTP-ответ 410 (GONE).Используйте этот флаг, чтобы пометить страницы, которые больше не существуют, как пропавшие.

(см. http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule)

Это означает, что правило, подобное приведенному выше, должно быть просто:

RewriteCond %{query_string} ^(.*&)?$ [NC]
RewriteRule ^1$ - [G]
3 голосов
/ 20 августа 2011

Нельзя перенаправить с помощью кода HTTP 410 - 410 означает, что запрошенная страница окончательно исчезла и замены нет:

410 Унес

Запрашиваемый ресурс больше не доступен на сервере, и адрес пересылки неизвестен. Ожидается, что это условие будет считаться постоянным. Клиенты с возможностями редактирования ссылок ДОЛЖНЫ удалять ссылки на Request-URI после одобрения пользователя. Если сервер не знает или не имеет возможности определить, является ли условие постоянным, СЛЕДУЕТ использовать код состояния 404 (не найден). Этот ответ кэшируется, если не указано иное.

- http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.11


Соответствующее определение для HTTP 301 указывает, что это уже именно то, что вы хотели:

301 постоянно перемещено

Запрошенному ресурсу был назначен новый постоянный URI, и любые будущие ссылки на этот ресурс ДОЛЖНЫ использовать один из возвращенных URI. Клиенты с возможностями редактирования ссылок должны автоматически связывать ссылки на Request-URI с одной или несколькими новыми ссылками, возвращаемыми сервером, где это возможно. Этот ответ кэшируется, если не указано иное.

- http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...