Как переписать / перенаправить URL с помощью . в path?

#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 перенаправления.