Я борюсь с переписыванием и перенаправлением NginX, но безуспешно. Был бы признателен за помощь.
Ситуация:
У клиента есть 4 домена, которые они хотят указать на одну и ту же установку Wordpress. Хорошо, я нашел хороший плагин WP (Multiple Domain) для этого.
Предыдущая установка WP находилась в папке / wp /, которую мне пришлось переместить в корневой каталог, чтобы плагин Multiple Domains работал.
Поэтому мне пришлось добавить параметры NginX для работы с предыдущей подпапкой / wp / по двум причинам:
Теперь работает ВСЕ belwo, и самое приятное то, что этот URL сохраняет домен в том виде, в каком он был введен (не перенаправляет на основной домен):
domainA.com
domainB.com/?cat=7 -> domainB.com/news
domainC.com/wp/something -> domainC.com/something
location ^~ /wp/(.+) {
rewrite ^/wp/(.+)$ $1 last;
}
Проблема? ДА, все работает нормально, ЗА ИСКЛЮЧЕНИЕМ случая, когда / wp / вызывается без параметров:
domainA.com/wp -> 404
domainB.com/wp -> 404
...
Я тоже пробовал (.*)
, но не помогло. Идеи?
РЕДАКТИРОВАТЬ Как сейчас настроено, все 4 домена работают нормально и нормально с / wp / в середине строки URL-адреса, например:
domain.com/wp/news -> domain.com/news (это здорово!)
Единственная проблема сохраняется, когда / wp находится в конце:
domain.com/wp -> domain.com/wp (НЕ перезаписывает / не перенаправляет, что НЕ нормально)
РЕДАКТИРОВАТЬ БОЛЕЕ ЧЕТКИЙ ВОПРОС
Я мог бы просто попросить правило перезаписи NginX, которое будет включать все эти места:
domain.com/WP/что-то
domain.com/WP/ wp-config
domain.com/WP/? cat = 7
domain.com/WP/
domain.com/WP
... но НЕ будет включать файлы wp *:
domain.com/wp-config
Это работает, но не распространяется только на / wp и / wp / без параметров:
location ^~ /wp/(.+) {
rewrite ^/wp/(.+)$ $1 last;
}
Ваше регулярное выражение требует конечной косой черты после /wp
присутствовать, чтобы соответствовать, но вы говорите, что не хотите этого.
location ^~ /wp/(.+) {
rewrite ^/wp/(.+)$ $1 last;
}
Так что просто сделайте завершающую косую черту необязательной. В этом отношении вам действительно не нужен location
; вы можете просто разместить rewrite
прямо в соответствующем server
блок.
rewrite ^/wp(/.+)? $1 last;