3

У меня есть проект, в котором мы перестраиваем сайт для клиента, новый сайт использует umbraco на платформе .net. старый сайт был холодным сплавом.urlrewritING.net символ запроса в виртуальном url, вызывающем цикл перенаправления

Umbraco использует библиотеку urlrewriting.net, поэтому я создал все 301 рекуррентные правила для старых URL-адресов слияния, но этот вызывает бесконечный цикл.

<add name="r66" virtualUrl="^~/thing_info/index.cfm.D413249D-BCD8-304B-02CD-561DAC70641E$" 
       destinationUrl="~/about-us/award-winning-product" redirect="Application" redirectMode="Permanent" ignoreCase="true" /> 

Я знаю "." имеет особое значение, но он работает достаточно хорошо, также я использовал «.». для соответствия любому персонажу, включая «?» символ, начинающийся с строки запроса. если я посещаю попробовать URL без строки запроса, как так

http://staging.site/thing_info/index.cfm-D413249D-BCD8-304B-02CD-561DAC70641E 

тогда я получаю правильно перенаправлены

http://staging.site/about-us/award-winning-product 

Однако, если я пытаюсь URL-адрес (знак вопроса является единственным отличием)

http://staging.site/thing_info/index.cfm?D413249D-BCD8-304B-02CD-561DAC70641E 

Затем я попадаю в цикл перенаправления к себе. (Я проверил заголовок ответа)

Кто-нибудь есть идеи, если я сделал что-то неправильно или если это ошибка в библиотеке urlrewriting.net? или как исправить проблему?

ответ

2

Его регулярное выражение так. означает любой символ. Вы можете попытаться убежать от точки. или вопрос с \? чтобы соответствовать этому персонажу.

+0

Я так не думаю, у меня есть предложение, охватывающее этот сценарий в вопросе. – Myster

5

По умолчанию UrlRewritingNet не будет включать строку запроса в соответствие шаблону. для того, чтобы это вам нужно добавить следующий атрибут rewriteUrlParameter = «IncludeQueryStringForRewrite»

<add name="r66" virtualUrl="^~/thing_info/index.cfm.D413249D-BCD8-304B-02CD-561DAC70641E$" 
    destinationUrl="~/about-us/award-winning-product" redirect="Application" redirectMode="Permanent" 
    ignoreCase="true" rewriteUrlParameter="IncludeQueryStringForRewrite" /> 

Дайте это попробовать и дайте мне знать, если он работает.

Джонатан

2

У меня была такая же проблема при попытке сделать постоянный 301 редирект с помощью Umbraco и UrlRewritingNet.

После прочтения этого и некоторые выдергивание волос я получил это работает со следующей записью в Umbraco/конфигурации/urlrewriting.config

<add name="Rule1885" 
     virtualUrl="^~/whats-on/event\.aspx\?id=1885" 
     destinationUrl="~/whats-on/event.aspx?id=1822" 
     rewriteUrlParameter="IncludeQueryStringForRewrite" 
     redirectMode="Permanent" 
     redirect="Application" 
     ignoreCase="true" /> 

Это было сочетание ответа Ионафан, чтобы добавить rewriteUrlParameter = «IncludeQueryStringForRewrite», и правильно экранируя параметр virtualUrl, который его отсортировал.

 Смежные вопросы

  • Нет связанных вопросов^_^