Итак, у меня на моем сервере (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/
не появляется в любой переменных.
Думаю, меня беспокоит то, что даже если я смогу это сделать, мне кажется, что простой запрос будет довольно запутанным:
/p/1234/
/product/?product_id=1234
/p/1234/
? (да)А иначе:
/product/?product_id=1234
/p/1234/
? (нет)/p/1234/
/product/?product_id=1234
/p/1234/
? (да)Я знаю, что в конечном итоге некоторые поисковые индексы удалят старые URL-адреса в пользу URL-адресов, указанных в перенаправлении 301, но до тех пор это кажется большим накладным расходом для серверов.
Кроме того, если бы я это настроил, есть ли фильтр, который я мог бы использовать в IIS для этого, или мне нужно было бы добавить логику в свое веб-приложение?
Обратите внимание, что я настроил <link rel="canonical".../>
для всех этих веб-страниц, но я все еще вижу, что старый формат отображается в результатах поиска.