.htaccess корневой URL-адрес для подпапки и конкретный URL-адрес для корневой папки - PullRequest
0 голосов
/ 02 апреля 2019

Моя установка странная, разумеется, я особенно ограничен в плане того, что я могу изменить.На данный момент мне проще всего изменить файл .htaccess на сервере.Текущая настройка каталога выглядит следующим образом:

/ - это установка WordPress

/front-end - это реагирующий веб-сайт, который использует REST API для установки wordpress для получения данных

Iя пытаюсь сделать так, чтобы при переходе на example.com он обслуживал контент с /front-end, но все запросы к /dashboard обслуживались из корневого каталога.

Например, эти URL-адреса будут выполнять следующее:

/ и /contact будут указывать на файл index.html внутри каталога front-end (реагирующий маршрутизатор подберет /contact)

/dashboard/wp-admin и /dashboard/wp-json/menus позволит WordPress в каталоге маршрутов вступить во владение.(это ВСЕГДА начиналось бы /dashboard)

Что я пытаюсь сделать выполнимым?

У меня есть для начала, но я не уверен, как игнорировать маршрут /dashboard

RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-s
RewriteCond %{DOCUMENT_ROOT}/front-end/%{REQUEST_URI} -s
RewriteRule . /front-end/index.html [L]

1 Ответ

0 голосов
/ 02 апреля 2019
RewriteEngine On
RewriteRule ^/?dashboard/(.*)$ /$1?wordpress=true [L,NC]
RewriteCond %{QUERY_STRING} !^.*wordpress=true.*$ [NC]
RewriteCond %{REQUEST_URI} !^/?front\-end.*$ [NC]
RewriteRule ^(.*)$ front-end/$1 [L,NC]
  • В приведенных выше правилах мы сначала проверяем, есть ли в наших запросах dashboard.Если да, мы намеренно прикрепляем строку запроса wordpress=true, чтобы избежать путаницы с вашей папкой реагирования и столкнемся с проблемой слишком большого числа перенаправлений.

  • Таким образом, мы также знаем, что текущий запрос предназначен для wordpress, и дальнейшие правила перезаписи не должны его касаться.

  • ВВо втором правиле перезаписи мы проверяем условия относительно того, есть ли у нас wordpress=true или нет, и проверяем, нет ли у него front-end в URL (также применимо для внутренней маршрутизации и не требует явного указания).Если он прошел оба теста, мы перенаправим его на вашу реакцию front-end, иначе мы оставим его для выполнения как есть.

  • Причина присоединения !^/?front\-end.*$ состоит в том, чтобы избежать бесконечных внутренних перенаправлений насам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...