Работа с / в IIS URL переписывает - PullRequest
1 голос
/ 27 октября 2010

Я использую переписывание URL IIS7 на моем веб-сайте, написанном на ASP.NET. Я не уверен, что лучший способ справиться с / в переписанном URL, потому что в настоящее время, когда он присутствует, он нарушает параметры, потому что движок считает, что нужно разделить его в неправильном месте. Например, URL-адрес, такой как:

www.test.com/myscript.aspx?code=dothis&title=tester/title

будет разделен неправильно. «тестер» станет кодом, а «заголовок» - заголовком. Есть ли способ, которым я могу предотвратить это, или это просто случай, когда вы не можете использовать / s, потому что движок разбивает URL на них?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

Функция URLEncode может использоваться для перекодирования обратных ссылок.Например:

^/myscript/([^/]+)/([^/]+)$                                    -> rewrite ->
/myscript.aspx?code={UrlEncode:{R:1}}&title={UrlEncode:{R:2}}

^/myscript.aspx?code=([^&]+)&title=([^&]+)$                    -> redirect ->
/myscript/{UrlEncode:{R:1}}/{UrlEncode:{R:2}}

Когда вы имеете дело с отдельными компонентами URL, такими как отдельные части пути или значения параметров (что в подавляющем большинстве случаев), вам понадобится URLEncode;IMO, это очень сомнительный элемент дизайна, который не происходит (а) по умолчанию или (б) в правилах, созданных мастером добавления правил.

0 голосов
/ 27 октября 2010

Я справился с этим, заменив все косые черты перед использованием в URL. Затем я снова ввожу косую черту, когда мне это нужно.

Не уверен, что это лучшее решение, но оно подходит для моего использования.

...