URL Переписать один и тот же хост другой порт в IIS 8.5 - PullRequest
0 голосов
/ 28 марта 2019

У меня есть сервер с тремя веб-сайтами:

  • Веб-сайт по умолчанию, порт 80 (без содержимого)
  • Веб-сайт A, порт 81
  • Веб-сайт B, порт82

Я хотел бы использовать перезапись URL для доступа к веб-сайту A и веб-сайту B, например:

http://myserver/A
http://myserver/B

вместо

http://myserver:81
http://myserver:82

Я установил модули URL Rewrite и Application Request Routing и включил прокси для ARR.

На веб-сайте по умолчанию Iсоздал два правила перезаписи, используя шаблон регулярных выражений /A/(.*) и /B/(.*):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WebsiteA" stopProcessing="true">
                    <match url="/A/(.*)" />
                    <action type="Rewrite" url="http://localhost:81/{R:1}" />
                </rule>
                <rule name="WebsiteB" stopProcessing="true">
                    <match url="/B/(.*)" />
                    <action type="Rewrite" url="http://localhost:82/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Используя функциональность Test pattern..., я мог убедиться, что {R:0} содержит весь тестовый URL, а {R:1} - только частьпосле A/ или B/. URL для перезаписи Я указывал либо на порт 81, либо на 82. Я до сих пор считаю регулярные выражения чистой магией, но тест дал мне то, что я хотел.Попытка подключиться к веб-сайтам через /A/ и /B/ дала мне 404 ошибки.

Видя, что это очень распространенная проблема с большим количеством вопросов и ответов, я выбрал один, предлагающий использовать шаблон регулярных выражений ^A(.*)$:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="WebsiteA" stopProcessing="true">
                    <match url="^A(.*)$" />
                    <action type="Rewrite" url="http://localhost:81/{R:1}" />
                </rule>
                <rule name="WebsiteB" stopProcessing="true">
                    <match url="^B(.*)$" />
                    <action type="Rewrite" url="http://localhost:82/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

При использовании функциональности теста мои тестовые URL не соответствовали этому шаблону, но когда я попытался получить доступ к сайтам с использованием нового шаблона, он сработал.

Вопрос: Я иду с более поздним решением, но это просто удача, что оно работает, и я должен, возможно, сделать что-то другое?

Это нормально для тестовой функциональности, которая не совпадает с теми же URL-адресами, которые работают, когда я передаю их на сервер?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...