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

301 редирект вместе с переписыванием URL для уменьшения количества URL с параметрами запроса

Итак, у меня на моем сервере (IIS 7) настроена перезапись URL, так что, например,

http://example.org/p/1234/

действительно

http://example.org/product/?product_id=1234

(С / product /, содержащим индексный файл для веб-приложения, которое может обрабатывать параметры запроса).

Проблема в том, что я хочу все использовать /p/1234/ URL-адреса сейчас, поэтому я хотел бы отправлять 301 редирект всякий раз, когда кто-то посещает старый URL-адрес /product/?product_id=1234, но насколько я могу судить, когда происходит перезапись URL, насколько сервер заинтересован в том, что пользователь сделал перейти к /product/?product_id=1234.

Хотя в адресной строке браузера может быть написано http://example.org/p/1234/, когда я делаю дамп заголовков и переменных CGI, /p/1234/ не появляется в любой переменных.

Думаю, меня беспокоит то, что даже если я смогу это сделать, мне кажется, что простой запрос будет довольно запутанным:

  1. Перейти к /p/1234/
  2. Перепишите это на /product/?product_id=1234
  3. Было ли это изначально /p/1234/? (да)
  4. Ничего не делать.

А иначе:

  1. Перейти к /product/?product_id=1234
  2. Было ли это изначально /p/1234/? (нет)
  3. 301 Перенаправить на /p/1234/
  4. Перепишите это на /product/?product_id=1234
  5. Было ли это изначально /p/1234/? (да)
  6. Ничего не делать.

Я знаю, что в конечном итоге некоторые поисковые индексы удалят старые URL-адреса в пользу URL-адресов, указанных в перенаправлении 301, но до тех пор это кажется большим накладным расходом для серверов.

Кроме того, если бы я это настроил, есть ли фильтр, который я мог бы использовать в IIS для этого, или мне нужно было бы добавить логику в свое веб-приложение?

Обратите внимание, что я настроил <link rel="canonical".../> для всех этих веб-страниц, но я все еще вижу, что старый формат отображается в результатах поиска.