Регулярное выражение перенаправления IIS не работает с пробелом — %20 в URL-адресе

Итак, у меня есть одна простая проблема, но почему-то она не работает. У меня есть один URL-адрес http://www.domain.com/%20#axzz2ZX4J0KAS, который я хочу перенаправить на http://www.domain.com/page-name.htm. Я пробовал так много комбинаций в IIS URL Rewrite/web.config, и все они, похоже, работают в диалоговом окне тестового шаблона, но ни одна из них не работает в браузерах.

1.

<rule name="Redirect%20InHomePage" enabled="true" stopProcessing="true">
    <match url="^(.+)domain\.com/(\s|%20)(.+)" ignoreCase="true" />
    <action type="Redirect" url="http://www.domain.com/page-name.htm" />
</rule>

2.

   <match url="(.+)/%20(.+)" ignoreCase="true" />

3.

    <match url="(.+)domain.com/ (.+)" ignoreCase="true" />

4.

   <match url="(.+)domain.com/(\s|%20)(.+)" ignoreCase="true" />

Как вы можете видеть, я попробовал все вышеперечисленные шаблоны, все они отлично работают в диалоговом окне «Тестовый шаблон», но когда я просматриваю URL-адрес, он всегда преобразует% 20 в пробел, и правило не работает для перенаправления.

Пожалуйста, помогите мне с этой простой, но нерешенной проблемой, если кто-нибудь знает, что мне не хватает.


person user704988    schedule 19.07.2013    source источник
comment
Примечание. #axzz2ZX4J0KAS добавляется ко всем URL-адресам с помощью используемого плагина JS, который находится вне моего контроля. администратор сайта может перестать использовать его в любое время, и он перестанет добавлять #axzz2ZX4J0KAS после всех URL-адресов.   -  person user704988    schedule 20.07.2013


Ответы (2)


У меня была аналогичная проблема, и я заставил ее работать, набрав пробелы «» вместо% 20 для моих правил.

Итак, здесь вы можете попробовать [ ] для своего пространства.

http://imgur.com/6sjWVjL

person lathomas64    schedule 29.10.2013
comment
трудно сказать, но между \. и %, хотя я действительно могу убрать эти два из этой конкретной перезаписи. - person lathomas64; 29.10.2013

Не включайте доменное имя в URL-адрес сопоставления.

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

<rule name="RedirectSpaceInHomePage" stopProcessing="true">
  <match url="^\s(#\.*)?$" />
  <action type="Redirect" url="page-name.htm" />
</rule>
person emjohn    schedule 29.10.2013