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-адреса в пользу тех, которые указаны в редиректе 301, но до тех пор это кажется чрезмерной нагрузкой для серверов.

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

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

0 ответов

Другие вопросы по тегам