Правило перезаписи URL-адресов при отправке запроса IIS 10 в приложение WordPress

Я использую IIS 10 на Windows Server 2019 с установленным на нем WordPress (среди прочего) с установленным URL Rewrite 2.1. IIS правильно настроен для приложения Wordpress, которое само по себе работает нормально.

Я пытаюсь определить правила перезаписи URL-адресов из корневого каталога сервера, которые будут отправлять определенные запросы в приложение WordPress.

Если я перейду к https://this.is.my.server.com/wp/this-is-a-test/, страница загружается нормально.

Я определяю карту перезаписи, которая включает запись для отправки /this-is-a-test на /wp/this-is-a-test/, и создаю правило перезаписи, которое использует эту карту для перенаправления запросов, она работает нормально - исходный URL-адрес возвращает статус HTTP 301, и запрос пересылается ожидаемому URL-адрес. Вот правило:

<rule name = "Rewrite rule1 for RewriteFriendlyUrlsToBlog" enabled = "true" stopProcessing = "true">
    <match url = ".*" />
        <conditions>
            <add input = "{RewriteFriendlyUrls:{REQUEST_URI}}" pattern = "(.+)" />
        </conditions>
    <action type = "Redirect" url = "{C:1}" appendQueryString = "true" logRewrittenUrl = "true" />
</rule>

Однако мне нужно правило перезаписи, а не перенаправление. Если я вместо этого отредактирую это правило и перепишу его, я получу ошибку 404. Скорректированное правило точно такое же, как и предыдущее, за исключением того, что оно переписывает вместо перенаправления:

<rule name = "Rewrite rule1 for RewriteFriendlyUrlsToBlog" enabled = "true" stopProcessing = "false">
    <match url = ".*" />
    <conditions>
        <add input = "{RewriteFriendlyUrls:{REQUEST_URI}}" pattern = "(.+)" />
    </conditions>
    <action type = "Rewrite" url = "{C:1}" appendQueryString = "true" logRewrittenUrl = "true" />
</rule>

Подробная информация об ошибке включает в себя:

Requested URL: https://this.is.my.server.com/wp/this-is-a-test/

... что подсказывает мне две вещи:

  1. Само правило перезаписи правильно отправляет запрос, но
  2. В переписанном запросе может отсутствовать информация, необходимая PHP/WordPress для правильной интерпретации запроса, или
  3. Правило в папке WordPress, которое перенаправляет запросы, которые не являются ни файлом, ни папкой, в index.php, по какой-то причине не выполняется.

Но я не знаю, что нужно сделать, чтобы это правило перезаписи работало правильно.

Попробуйте использовать FRT для отслеживания правил перезаписи, вы увидите, как правила используются внутри. Learn.microsoft.com/en-us/iis/extensions/url-rewrite-module/‌​…

YurongDai 06.05.2024 11:08
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
0
1
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Методом проб и ошибок я обнаружил, что для того, чтобы перезапись прошла правильно, мне нужно переписать на index.php, убедившись, что установлен флажок «Добавить строку запроса», а не на ожидаемый URL-адрес.

Кажется, это работает:

<rule name = "TEST single URL rewrite to PHP" enabled = "false" patternSyntax = "ECMAScript" stopProcessing = "false">
    <match url = "^this-is-a-test" />
    <conditions logicalGrouping = "MatchAll" trackAllCaptures = "false" />
    <action type = "Rewrite" url = "/wp/index.php" />
</rule>

Также работает с использованием карты перезаписи.

Мне кажется, что при перезаписи правило в папке WordPress, которое перезаписывает запросы, которые не являются ни файлами, ни папками, в index.php, не обрабатывается, независимо от того, какое значение установлено у вас в опции «stopProcessing».

Другие вопросы по теме

Похожие вопросы

Как отображать настраиваемые поля переменных продуктов под названием продукта на главной странице продукта
Обновить цену продукта WooCommerce на основе настраиваемого поля ввода
Пользовательский блок Wordpress Gutenberg, viewScript не загружается во внешнем интерфейсе, когда мой блок вставлен
Отключить кнопку размещения заказа WooCommerce Checkout на основе идентификатора пользователя
Проблема с обновлением CSS в WordPress с помощью хостинга
Горячая перезагрузка не работает полностью при использовании плагина Vite/Laravel Vite внутри Wordpress
Создайте собственный фильтр в списке заказов администратора WooCommerce (HPOS)
Изменение цвета фона в списке заказов администратора WooCommerce в зависимости от роли пользователя
Обновление метаданных пользовательского заказа администратора для высокопроизводительного хранилища заказов WooCommerce (HPOS)
Как сделать URL-ссылку для более чем одной ячейки в wptables?