2013-07-10 2 views
1

Мы имеем следующее правило перезаписи на 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 в журналах, что странно.

ответ

0

Проблема в том, что нам нужно заново делать инструмент конфигурации из Coldfusion 10 после того, как мы применили новое обновление 11 вчера. Теперь работает.

2

Необходимо добавить условия в том случае, если на сайте будут размещаться изображения, js, css и т. Д. Вы также не хотите переписывать любые возможные URls, у которых есть CFM.

Эти условия мы используем,:

<conditions> 
    <add input="{SCRIPT_FILENAME}" matchType="IsFile" negate="true" /> 
    <add input="{SCRIPT_FILENAME}" matchType="IsDirectory" negate="true" /> 
    <add input="{PATH_INFO}" pattern="^.*(/index.cfm/).*$" negate="true" /> 
</conditions> 
+0

Спасибо! Я попробую это завтра в тестовой версии. У нас уже есть другие правила перезаписи перед этим правилом, чтобы обрабатывать css/js. Но я обязательно узнаю, что добавит index.cfm в качестве условия. –

+0

Хорошо, я пробовал, но, похоже, это не помогает с моей оригинальной проблемой. Есть идеи? –

+0

Хотя сейчас он работает с 301 переадресацией, но это, конечно, не то, что я хочу. –