Я пытаюсь разместить все мои субдомены в соответствующих папках на моем веб-сервере, что означает
https://foo.bar.com/index.html
находится по адресу
https://bar.com/foo/index.html
по моей текущей конфигурации, файл не может и не должен быть доступен через «оригинальную» ссылку.
Мой текущий подход работает, за исключением URL-адресов, которые указывают на подкаталог без имени файла в пути - в этом случае субдомен повторно включается в путь переписанного url:
https://foo.bar.com/this/does/work.html
обслуживает файл, расположенный по адресу
https://bar.com/foo/this/does/work.html
пока
https://foo.bar.com/this/does/not/work
переписывается в браузере на
https://foo.bar.com/foo/this/does/not/work
, что по понятным причинам приводит к 404.
Однако, если вы введете URL-адрес с проблемами непосредственно в браузере
https://foo.bar.com/this/does/not/work
работает как положено.
Я знаю, что я использую слово "очевидно" в широком смысле. Вот короткая демонстрация:
https://egal.todoservice.app/
как вы должны видеть там, ссылка на странице
https://egal.todoservice.app/sub/dir/
ведет вас к
https://egal.todoservice.app/egal/sub/dir/
, но попробуйте ввести эту ссылку прямо в адресную строку, и она работает - по крайней мере, для меня это проверено в Chrome, Edge и Firefox.
ОБНОВЛЕНИЕ: странно, использование ссылки subdir здесь на stackoverflow работает, как и ожидалось ...
Это часть моего web.config, которая отвечает за перезапись поддомена
<rule name="Rewrite Subdomain To Directory" stopProcessing="false">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(.+)\.todoservice\.app$" />
</conditions>
<action type="Rewrite" url="{C:1}/{R:0}" />
</rule>
А вот мой полный web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension="." mimeType="text/plain" />
<mimeMap fileExtension=".nupkg" mimeType="application/zip" />
</staticContent>
<rewrite>
<rules>
<rule name="Rewrite SMZC URL" stopProcessing="false">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="www.sadmenszombieclub.com" />
</conditions>
<action type="Rewrite" url="smzc/{R:0}" />
</rule>
<rule name="Rewrite imagiro URL" stopProcessing="false">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="www.imagiro.net" />
</conditions>
<action type="Rewrite" url="imagiro/{R:0}" />
</rule>
<rule name="Rewrite Subdomain To Directory" stopProcessing="false">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(.+)\.todoservice\.app$" />
</conditions>
<action type="Rewrite" url="{C:1}/{R:0}" />
</rule>
<rule name="Rewrite root path to service Directory" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^todoservice\.app$" />
</conditions>
<action type="Rewrite" url="service/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Весь сайт размещен как веб-приложение Azure.