Как перенаправить определенный порт на сервере IIS на другой порт - PullRequest
0 голосов
/ 27 августа 2018

Правило перезаписи моего URL работает только для порта 80 в IIS.

Перезапись работает для: http://localhost:80 -> http://localhost:8100

Перезапись работает для: http://localhost:80/redirect -> http://localhost:8100

Перезапись не работает для: http://localhost:8080 -> http://localhost:8100

Перезапись не работает для: http://localhost:8080/redirect -> http://localhost:8100

Мой web.config выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
 <configuration>
<system.webServer>
    <directoryBrowse enabled="true" showFlags="Date, Time, Size, Extension, LongDate" />
    <rewrite>
        <rules>
            <rule name="Redirect to port 8100" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAny">
                    <add input="{SERVER_PORT}" pattern="^8100$" negate="true" />
                </conditions>
                <action type="Redirect" url="http://{HTTP_HOST}:8100/{R:0}" />
            </rule>
        </rules>
    </rewrite>
 </system.webServer>
</configuration>

web.config работает только по умолчанию с http-портом 80/443, но не для определенного порта.

Какие изменения необходимо внести в web.config для работы со всеми портами?

1 Ответ

0 голосов
/ 05 сентября 2018

Основная проблема - переменная {HTTP_HOST}, которая уже содержит информацию PORT.

Чтобы решить эту проблему, вам нужно настроить две вещи:

  1. Расширить соответствующий шаблон в пределах
  2. Установите правильный адрес для перенаправления

Я настроил ваш web.config, чтобы увидеть, как он должен работать с вашим примером:

<?xml version="1.0" encoding="UTF-8"?>
 <configuration>
<system.webServer>
    <directoryBrowse enabled="true" showFlags="Date, Time, Size, Extension, LongDate" />
    <rewrite>
        <rules>
            <rule name="Redirect to port 8100" stopProcessing="true">
                <match url="(.*)" ignoreCase="true" />

                <conditions logicalGrouping="MatchAll" trackAllCaptures="true" >
                    <add input="{HTTP_HOST}" pattern="([^/:]*?):[^/]*?" />
                </conditions>

                <action type="Redirect" url="http://{C:1}:8100/{R:0}" appendQueryString="false" />

            </rule>
        </rules>
    </rewrite>
 </system.webServer>
</configuration>
...