#c# #asp.net #redirect #url-rewriting
#c# #asp.net #перенаправление #url-перезапись
Вопрос:
У меня есть сайт, который был создан asp.net 2 другим парнем давным-давно. По некоторым причинам Google проиндексировал множество страниц, URL которых имеет . в пути (не в части домена). т.е.
http://example.com/CA/Orange/Industrial-Warehouse-Space/1411-N.-St./1234567
В коде UrlRewritingNet используется для перезаписи URL. Одним из правил является:
<add name="Rewrite_5" virtualUrl="^~/([^/] )/([^/] )/([^/] )/([^/] )/([0-9] )/*$"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/Location.aspx?id=$5"
redirectMode = "Permanent"
ignoreCase="true" />
Если URL является:
http://example.com/CA/Orange/Industrial-Warehouse-Space/1411-N.-St/1234567
Обратите внимание, что после ‘St’ нет ‘.’. Тогда URL будет успешно перезаписан. Но если используется
http://example.com/CA/Orange/Industrial-Warehouse-Space/1411-N.-St./1234567
Сайт всегда показывает:
Server Error in '/' Application
The resource cannot be found.
Мне интересно, есть ли способ переписать / перенаправить этот URL на правильный URL или даже на домашнюю страницу? В настоящее время он включен asp.net 2, при необходимости, можно изменить и на другой фреймворк. Есть предложения?
Спасибо
- Я использую UrlRewritingNet для перезаписи, не уверен, какой фактический URL он пытается переписать, когда возникает ошибка. Однако я не могу зафиксировать это на странице CustomError для 404 (это 404, если смотреть на трафик).
Комментарии:
1. Это регулярное выражение кажется мне прекрасным, и оно фактически фиксирует ‘.’ в части ‘1411-N.-St.’. Можете ли вы проверить, на какой URL сервер перенаправляет при доступе к этим URL с помощью ‘.’?
2. Я добавил больше информации в конце поста. Спасибо.
3. Самый простой способ — это нажать на нерабочий URL в инструментах разработки браузера (возможно, вам нужно установить его для сохранения журнала) или из Fiddler. Когда вы отправите запрос, сервер должен ответить постоянным перенаправлением 301 и предоставить URL перенаправления.