Рейтинг:1

Как заставить mod_rewrite принудительно перенаправить?

флаг fr

Мне нужно временно перенаправить мой сайт на статическую версию, размещенную на Cloudflare. Текущий сайт - это сайт Wordpress, размещенный на Ionos, и Wordpress, похоже, выполняет перенаправление 301 с мой домен.com к www.mydomain.com. Я хотел бы иметь возможность продолжать доступ к экземпляру Wordpress, перейдя к www.mydomain.com но если я (или кто-то другой) пойдет в мой домен.com Я хочу, чтобы меня перенаправили на static.mydomain.com.

я положил это в свой .htaccess файл:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain.com
RewriteCond %{HTTP_HOST} !^www.mydomain.com
RewriteRule ^(.*) https://static.mydomain.com/$1 [R=302,L]
</IfModule>

Однако, когда я посещаю мой домен.com меня по-прежнему перенаправляют на www.mydomain.com поэтому кажется, что .htaccess RewriteRule не срабатывает, и поэтому Wordpress выполняет перенаправление.

Есть ли какой-нибудь способ в .htaccess (у меня нет доступа к файлу конфигурации Apache) для принудительного перенаправления, как я описываю?

Рейтинг:1
флаг kz

Я предполагаю, что статическая версия вашего сайта (в static.example.com) буквально является статическим сайтом, отличным от WordPress, поэтому сам по себе не может учитывать какие-либо перенаправления.

На самом деле в опубликованном вами правиле нет ничего «неправильного». Однако, ...

  1. Предыдущее перенаправление «WordPress» 301 (постоянное) с не-www на www будет кэшировано (постоянно) кешем браузера (и, возможно, промежуточным). Это нужно будет очистить вручную для вашего перенаправления в .htaccess иметь какой-либо эффект.

  2. Ваше перенаправление должно идти в вершина принадлежащий .htaccess файл перед блок кода WordPress (переписать на фронт-контроллер), т.е. перед в # НАЧАТЬ WordPress маркер комментария. Если вы поместите перенаправление в конец файла (или после блока кода WordPress), оно будет обрабатываться только для запросов к статическим ресурсам (и каталогам). URL-адреса WordPress (виртуальные) не будут перенаправлены, так как запрос уже был переписан на index.php (фронт-контроллер WordPress).


В стороне:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain.com
RewriteCond %{HTTP_HOST} !^www.mydomain.com
RewriteRule ^(.*) https://static.mydomain.com/$1 [R=302,L]
</IfModule>

Просто немного прибраться... вам не нужно повторять RewriteEngine включен директива, так как это уже появляется позже в файле, в блоке кода WordPress.

Вам не нужно <IfModule> обертка. Это перенаправление должно произойти, это не по желанию.

Второй условие (RewriteCond директива) не требуется. Нет необходимости проверять, что Хозяин является А и нет Б. (Если это А тогда этого не может быть Б также.)

Таким образом, вышеизложенное можно упростить до:

# Временно перенаправить вершину домена на «статический» поддомен
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule (.*) https://static.example.com/$1 [R=302,L]

# НАЧАТЬ WordPress
: Далее следуют другие директивы....

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.