URL исходящего WordPress сайта IIS в CSS
Я использую IIS, и он прослушивает порты 80 и 443. Теперь нам нужно настроить сайт WordPress на Apache и заставить его работать на порте по умолчанию. Мы попытались создать прокси-сервер в IIS с использованием перезаписи URL и ARR и перенаправить запрос на другой порт. Оба сервера находятся на машине. Все работает нормально, кроме абсолютных URL в background-image()
или же url()
в css.
Ниже приведены правила IIS:
<rules>
<!-- Forward request to apache. SSL offloading enabled. -->
<rule name="Forward Request to Apache" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://mysite.xyz:8080/{R:1}" />
</rule>
</rules>
<outboundRules>
<rule name="Apache Outbound" enabled="true" preCondition="IsHtml">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^(.*)mysite.xyz:8080(.*)$" />
<action type="Rewrite" value="https://mysite.xyz{R:2}" />
</rule>
<preConditions>
<preCondition name="IsHtml">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
Проблема в том, что некоторый контент был добавлен на страницу каким-то компонентом (я думаю) и находится на http(так как URL сайта настроен на http) и создает ошибку смешанного контента при загрузке через SSL:
<div class="wpex-parallax-bg"
data-direction="top" data-velocity="-0.2"
style="background-image: url("http://mysite.xyz:8080/wp-content/uploads/2018/02/beach-sunset-2-1.jpg");
opacity: 1; background-position: 50% -297.956px;"
></div>
Я думаю, что это какой-то JS. Есть ли способ исправить это, добавив исходящие правила на IIS или что-то на стороне WordPress?
Любые предложения с благодарностью!
PS:- Я не парень WordPress, поэтому, пожалуйста, потерпите меня.:)
1 ответ
В философии WordPress каждый сайт имеет канонический URL, а WordPress везде использует абсолютные URL. Использование относительных URL-адресов уже обсуждалось, а использование абсолютных URL-адресов вполне обосновано. (Хотя мне это не нравилось, я привык это принимать.)
Здесь порт, который слушает Apache, является лишь технологическим требованием, и он может также прослушивать соединения только с локального хоста. Ваш сайт никогда не должен посещаться с помощью http://example.com:8080/
это означает, что он может иметь канонический адрес http(s)://example.com/
(или подпапка).
Поскольку ваш сайт имеет каноническое имя, вы можете потратить некоторое время, чтобы настроить свой сайт WordPress для его повсеместного использования:
- В разделе "Настройки"> "Основные" настройте адрес WordPress (URL) и адрес сайта (URL).
- Используя плагины, такие как Search & Replace, вы можете заменить все неправильные и относительные URL в вашей базе данных на канонический URL.
- Если кто-то действительно сделал что-то по-другому, вам, возможно, придется изменить это вручную.
Хотя это можно сделать с помощью переписывания IIS, этот метод облегчает работу в будущем: когда вам нужно изменить программный стек веб-сервера или даже канонический URL-адрес, у вас есть собственный способ сделать это в WordPress. Рассматривайте это как разовую работу для переносимости.