Дружественные URL на IIS
Последнее обновление Oct 11th, 2026 | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn moreЭта страница нужна, если MODX работает на Microsoft IIS и нужны дружественные URL (FURL). На Apache используют ht.access / .htaccess. На IIS — файл web.config и модуль URL Rewrite.
Базовые правила ниже применяются к IIS 7 и новее, включая актуальные версии Windows Server.
Требования¶
- Установите на сервере модуль IIS URL Rewrite, если его ещё нет. Без него IIS не применяет правила из
web.config. - Положите
web.configв корень сайта рядом сindex.php(на одном уровне сassets/,manager/иconnectors/). Не кладите его вcore/. Оттуда правила не переписывают публичные запросы к страницам. - Убедитесь, что сайт или приложение IIS указывает на этот корень.
Пример web.config¶
Создайте web.config в корне сайта (или вставьте эти правила в уже существующий файл). Правило Friendly URLs повторяет суть корневого ht.access в Revolution: неизвестные пути отдаются в index.php?q=….
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<!-- Опционально: блокировать internal dummy connection, если они есть в логах -->
<rule name="Block internal dummy connection" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_USER_AGENT}" pattern="internal dummy connection" />
</conditions>
<action type="CustomResponse" statusCode="403"
statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<!-- Блокировать прямой доступ к внутренним путям (минимальные правила в стиле Apache) -->
<rule name="Block internal paths" stopProcessing="true">
<match url="^(core|_build|_gitify|_backup|config\.core\.php)(/|$)" />
<action type="CustomResponse" statusCode="404"
statusReason="Not Found" statusDescription="Not Found" />
</rule>
<rule name="MODX Friendly URLs" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?q={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Если MODX лежит в подкаталоге (например /modx), поправьте url в rewrite так, чтобы он указывал на index.php этой папки, либо сделайте корень приложения IIS равным web-корню MODX. Тогда пример выше можно не менять.
Необязательно: принудительный www или HTTPS¶
Добавьте эти правила выше правила Friendly URLs в том же блоке <rules> и замените примерные домены на свои:
<!-- Принудительно канонический хост (www -> домен без www) -->
<rule name="Redirect www to apex" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.(.+)$" />
</conditions>
<action type="Redirect" url="https://{C:1}/{R:1}"
redirectType="Permanent" appendQueryString="true" />
</rule>
<!-- Принудительно HTTPS -->
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
redirectType="Permanent" appendQueryString="true" />
</rule>
Без этих правил www и домены без www (и HTTP вместе с HTTPS) отдают дублирующийся контент — по той же причине в руководстве по Apache в ht.access идут закомментированные блоки www/HTTPS.
Включение Friendly URLs в MODX¶
Включайте FURL в панели управления после того, как rewrite уже работает.
- Откройте в браузере URL без реального файла (например
/about) и проверьте, что IIS отдаёт запрос в MODX, а не статический 404. - В Системных настройках поставьте
friendly_urlsв Yes. - Очистите кэш сайта.
- В шаблоне(ах) задайте базовый URL, чтобы CSS и JS продолжали грузиться, например:
<base href="[[!++site_url]]" />
Если включить friendly_urls до рабочего rewrite, ссылки на ресурсы станут «красивыми», а стили и скрипты сломаются. Сначала почините rewrite, потом меняйте настройку.
Мультиязычные сайты¶
Дополнения вроде Babel или XRouting сначала требуют рабочих FURL. Когда базовое правило выше уже работает, добавьте дополнительные правила IIS из документации этих дополнений (префиксы языка, домены). В типичном случае на IIS мультиязычность «не ехала», пока не стояли URL Rewrite и корневой web.config.
См. также¶
- Использование дружественных URL
- Усиление безопасности MODX
- Расширенная установка
- Дружественные URL на nginx
- Дружественные URL на lighttpd
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn more










