Я пытаюсь настроить Redmine в качестве подкаталога на сайте интрасети нашего отдела, а также переименовать его в «Рабочий процесс» с помощью расширения IIS для перезаписи URL.
У меня он «работает» в том смысле, что он будет обслуживать страницу со всеми правильными перезаписями как в URL-адресе, так и в HTML-коде. Однако, когда я пытаюсь отправить форму (включая вход в Redmine), IIS выдает одну из следующих ошибок:
Your browser sent a request that this server could not understand.
или
The specified CGI application encountered an error and the server terminated the process.
Вот установка:
<rewrite>
<rules>
<rule name="Route requests for workflow to redmine server" stopProcessing="true">
<match url="^workflow/?(.*)" />
<conditions>
<add input="{CACHE_URL}" pattern="^(https?)://" />
</conditions>
<action type="Rewrite" url="{C:1}://146.18.236.xxx/redmine/{R:1}" logRewrittenUrl="true" />
<serverVariables>
<set name="HTTP_ACCEPT_ENCODING" value="" />
<set name="ORIGINAL_HOST" value="{HTTP_HOST}" />
</serverVariables>
</rule>
</rules>
<outboundRules rewriteBeforeCache="true">
<clear />
<preConditions>
<preCondition name="isHTML" logicalGrouping="MatchAny">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/plain" />
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^application/.*xml" />
</preCondition>
<preCondition name="isRedirection">
<add input="{RESPONSE_STATUS}" pattern="3\d\d" />
</preCondition>
</preConditions>
<rule name="Rewrite outbound relative URLs in tags" preCondition="isHTML">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/redmine/(.*)" />
<action type="Rewrite" value="/workflow/{R:1}" />
</rule>
<rule name="Rewrite outbound absolute URLs in tags" preCondition="isHTML">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^(https?)://146.18.236.xxx/redmine/(.*)" />
<action type="Rewrite" value="{R:1}://mydept.mycompany.com/workflow/{R:2}" />
</rule>
<rule name="Rewrite tags with hypenated properties missed by IIS bug" preCondition="isHTML"> <!-- http://forums.iis.net/t/1200916.aspx -->
<match filterByTags="None" customTags="" pattern="(\baction="|\bsrc="|\bhref=")/redmine/(.*?)(")" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="true" />
<action type="Rewrite" value="{R:1}/workflow/{R:2}{R:3}" />
</rule>
<rule name="Rewrite Location Header" preCondition="isRedirection">
<match serverVariable="RESPONSE_LOCATION" pattern="^http://[^/]+/(.*)" />
<conditions>
<add input="{ORIGINAL_URL}" pattern=".+" />
<add input="{URL}" pattern="^/(workflow|redmine)/.*" />
</conditions>
<action type="Rewrite" value="http://{ORIGINAL_URL}/{C:1}/{R:1}" />
</rule>
</outboundRules>
</rewrite>
<urlCompression dynamicCompressionBeforeCache="false" />
Любая помощь, которую вы можете предоставить, будет оценена. У меня сложилось впечатление, что я близок к тому, что это всего лишь небольшая настройка здесь или там, но я не могу заставить ее работать.
Я понимаю, что может быть немного поздно, но отметили ли вы флажок «добавить строку запроса» для правила для входящих подключений в диспетчере IIS? У меня было много странных проблем, пока я не понял, что снял этот флажок (по совету какого-то блога). Проверка, похоже, решила для меня все (запуск Redmine 2.3.3 за IIS 7, настроенным как обратный прокси).