Я довольно долго искал безуспешно, поэтому решил, что пришло время спросить.
У меня есть ситуация, когда клиенту нужны URL SEF
www.somesite.com/sef_rewriting
www.somesite.com/foo
работает нормально - проблема в том, что произойдет, если sef_rewriting
также может быть каталогом?
www.somesite.com/sef_rewriting/removing_file_extensions
IIS автоматически добавитзавершающий слеш, если кто-то запрашивает следующий URL: www.somesite.com/sef_rewriting
и перенаправляет в подкаталог.
например Структура
>wwwroot
-index.html
-foo.html
-sef_rewriting.html
>sef_rewriting
-removing_file_extensions.html
Как создать правило, чтобы проверить,запрашиваемый URL-адрес без расширения соответствует файлу с указанным расширением, скажем, в этом случае (html) и обслуживает этот файл, и только если файл не существует, IIS перенаправляет в подкаталог?
Я обнаружил следующееправило онлайн, оно работает для основного случая, но не для подкаталогов с тем же именем, что и у файлов.
<rule name="SEF REWRITE html">
<match url=".*" negate="false" />
<conditions>
<add input="{URL}" pattern="(/[^.]*|\.(html))$" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="{C:0}.html" />
</rule>
любая помощь приветствуется.
примечание: схема именования файлов и каталогов можетне подлежит изменению.
UPDATE: отредактировано для ясности
Правила должны обрабатывать следующие условия
- www.mysite.com - serve index.html
- www.mysite.com / foo - служить1046 *