2017-02-03 16 views
0

У меня есть фрагмент кода JavaScript, который, когда пользователь переходит на мою страницу без строки запроса, перенаправляется на ту же страницу с определенной строкой запроса.URL-адрес IIS перенаправляется на ту же страницу с другой строкой запроса

Я подумал, что лучше сделать это с помощью правила перезаписи URL IIS, например:

<rules> 
    <rule name="mypage" stopProcessing="true"> 
    <match url="/mypage/*$" />  
    <action type="Redirect" url="/mypage/?category=shopping" appendQueryString="true" /> 
    </rule> 
</rules> 

Это просто не работает.

Я тестировал регулярное выражение с помощью инструментов IIS, и это нормально, также правило перезаписи выбрано IIS, поэтому там не должно быть проблем. На всякий случай я устанавливаю appendQueryString как true и false. но в любом случае это не сработало.

Кроме того, на всякий случай я попробовал как действия «Переписать», так и «Переадресовать». Не работает.

Не могли бы вы помочь? Благодарю.

+0

Я хотел бы видеть новую строку запроса в URL-адресе, поэтому предпочтительнее использовать тип действия «Переадресация». –

ответ

1

Вам необходимо удалить первую косую черту в матче. Вам также нужно проверить, что уже существует очередь, иначе она перейдет в бесконечный цикл переадресации. У вас не будет этой проблемы, если вы переписываете

<rule name="mypage" stopProcessing="true"> 
     <match url="^mypage/*$" /> 
     <action type="Redirect" url="/mypage/?category=shopping" appendQueryString="true" /> 
     <conditions> 
     <add input="{QUERY_STRING}" pattern="category=shopping" negate="true" /> 
     </conditions> 
    </rule> 
+0

Спасибо, Jeroen. Требуется первая косая черта. ваше регулярное выражение может соответствовать «www.mysite.com/this-is-mypage», что нежелательно в моем случае. Можете ли вы уточнить вторую часть своего ответа? Как я могу «проверить, что уже существует очередь»? –

+0

Если вы хотите избежать соответствия «www.mysite.com/this-is-mypage», тогда вам нужно использовать ^, чтобы он начинал сопоставляться в начале URL-адреса. Вы можете добавить querystring в качестве условия и отменить его, чтобы он соответствовал всем, кроме строки запроса, чтобы избежать цикла перенаправления. Я обновил свой первоначальный ответ с полным правилом. – Jeroen

+0

Спасибо, Jeroen! ;-) –

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

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