У меня есть сервер с тремя веб-сайтами:
- Веб-сайт по умолчанию, порт 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-адресами, которые работают, когда я передаю их на сервер?