IIS - Перенаправление портов - Модуль перезаписи - Файл Web.Config - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь создать соответствующий файл web.config для перенаправления конечных пользователей с намерением добавить порт к запросу.

Любой конечный пользователь, который, например, наберет http://subscribe.service.com/lists/index.html, будет перенаправлен на http://subscribe.service.com:3000/lists/index.html, так что независимо от вызываемого запроса он добавит в него: 3000.

Пример кода, который я использую, приведен ниже. В проверочном тестировании это работает так, как я хотел бы. На практике ничего не происходит, когда я попадаю на физический сайт.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpRedirect enabled="false" destination="" childOnly="true" httpResponseStatus="Permanent" />
        <rewrite>
            <rules>
                <rule name="3000 Port Redirect" enabled="true" stopProcessing="true">
                    <match url="http:/(.*)com" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="\.com(.*)" />
                    </conditions>
                    <action type="Redirect" url="{R:0}:3000{C:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

1 Ответ

0 голосов
/ 25 января 2019

Как упоминалось в статье Лекса Ли, переопределение URL модели не соответствует домену. Это означает, что IIS использует lists / index.html для соответствия правилу "http: / (. *) Com". Таким образом, вы обнаружите, что ваше правило не работает.

Я предлагаю вам попробовать использовать приведенное ниже правило перезаписи URL.

  <rule name="rewrite to 81 port" enabled="true">
                <match url="(.*)" />

                <action type="Redirect" url=" http://subscribe.service.com:3000/{R:0}"  appendQueryString="true"/>
            </rule>

Тогда это будет хорошо работать.

...