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