Мы имеем следующее правило перезаписи на IIS7.5 (переписан после ответа Джеймса Мобергом):Rewrite проблема с ColdFusion и IIS
<rule name="Anything else to the event handler" enabled="true" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{PATH_INFO}" pattern="^.*(/index.cfm/).*$" negate="true" />
</conditions>
<action type="Rewrite" url="/index.cfm/{R:1}" appendQueryString="true" logRewrittenUrl="true" />
</rule>
Однако она никогда ставит /{R:1}
после него. Он просто подходит к /index.cfm
. Нам нужно получить ссылочную переменную, потому что мы используем ее в наших сценариях ColdFusion (10). URL Rewrite пример, который мы хотели бы:
От: http://www.my-site.com/this.is.a.test/another.test
To: http://www.my-site.com/index.cfm/this.is.a.test/another.test
Любой, кто имеет представление о том, почему он не будет делать это? (быстрая заметка: при выполнении правильного URL-адреса может возникнуть ошибка ColdFusion, но я бы не подумал, что это вызовет проблемы с переписыванием?)
Обратите внимание, что это действительно работает, когда вы пытаетесь сделать то же самое в браузере (с помощью правило отключено) - просто не с помощью правила перезаписи. С правилом перезаписи переменная cgi.PATH_INFO
в CF возвращает пустую строку.
Кроме того, IIS заявляет, что переписал URL-адрес index.cfm/this.is.a.test/another.test
в журналах, что странно.
Спасибо! Я попробую это завтра в тестовой версии. У нас уже есть другие правила перезаписи перед этим правилом, чтобы обрабатывать css/js. Но я обязательно узнаю, что добавит index.cfm в качестве условия. –
Хорошо, я пробовал, но, похоже, это не помогает с моей оригинальной проблемой. Есть идеи? –
Хотя сейчас он работает с 301 переадресацией, но это, конечно, не то, что я хочу. –