Я пробовал различные регулярные выражения ( ^/$
, ^index.php$
, ^$
) для перезаписи/проксирования только домашней страницы сайта WordPress через .htaccess
. Для справки у меня загружены соответствующие модули для выполнения этого и я могу сделать это для других путей с определенным регулярным выражением, но только не для домашней страницы. Другие ответы указали ^$
и ^/$
будут работать, но это не работает для меня. Как можно получить только домашнюю страницу?
RewriteEngine On
RewriteBase /
RewriteRule ^$ http://some-other-domain.com [P]
Конечная цель — обслуживать страницу с другого сайта только для домашней страницы. Возможно, есть лучший подход?
решение1
Попробуйте вместо этого в верхней части файла что-то вроде следующего .htaccess
:дофронт-контроллер WordPress:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(index\.php)?$ http://some-other-domain.com/ [P]
Директивы RewriteBase
и RewriteEngine
здесь не требуются. RewriteEngine
Предположительно, они уже присутствуют далее в файле как часть # BEGIN WordPress
блока кода (порядок не важен).
Обратите внимание на суффикс слеш взаменастрока. Этонеобходимыйчасть URL (у вас не может быть пустого URL-пути). Если вы его здесь опустите, то что-то другое должно будет его "исправить" позже. В случае внешнего редиректа, тобраузер«Исправил бы» это, но здесь нет «браузера».
Это соответствует как пустому URL-пути, так и index.php
(в случае, если mod_dir выдает подзапрос для индекса каталогадоmod_rewrite отправляет запрос через mod_proxy).состояниечто проверка REDIRECT_STATUS
env var необходима в этом случае, чтобы избежать проксированиявсе, так как фронт-контроллер WordPress перезаписывает все в index.php
. Условие гарантирует, что будут сопоставлены только прямые запросы, а не перезаписанные запросы.
В стороне:АRewriteRule
шаблонlike ^/$
никогда не будет соответствовать контексту .htaccess
. Это сработает только если директива будет использоваться всервер(иливиртуальныйхост) контекст.