.htaccess перенаправить и переписать URL-адрес, если REQUEST_URI начинается с определенного пути

Я работаю над сайтом Wordpress, для этого требуется плагин, который должен получить доступ к конечной точке API WP.

Он хочет получить доступ к сайту:

http://myhost.test/wp/wp-json/erp/v1/hrm/employees/1\?include\=department,designation,reporting_to,avatar,roles

но изменения в структуре папок приводят к тому, что настоящая и фактическая ссылка должна быть:

http://myhost.test/wp-json/erp/v1/hrm/employees/1\?include\=department,designation,reporting_to,avatar,roles

как видите, в начале /wp не должно быть %{REQUEST_URI}

Я пытаюсь выполнить эту работу: но он не перенаправляет запрос:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/wp/wp\-json/
RewriteRule ^/wp/wp\-json(.*) /wp\-json$1 [L,R]

Я не понимаю, что делаю не так,

Ловлю все после ^/wp/wp-json потом пересылаю на ^/wp-json

Что происходит?

С уважением,

Если вы используете это внутри файла .htaccess, удалите ведущий / из первого аргумента RewriteRule. Я не уверен, что это единственная проблема, но в .htaccess mod_rewrite никогда не получает ведущий /, как это было бы в контексте <Directory> или <VirtualHost>. Он начал бы соответствовать как ^wp, а не как ^/wp, как в RewriteRule ^wp/wp\-json(.*) /wp\-json$1 [L,R].

Michael Berkowski 01.08.2018 04:51

@MichaelBerkowski Да, я думаю, это ответ, не могли бы вы создать это решение, чтобы я мог отметить его как ответ?

arvil 01.08.2018 08:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
642
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование mod_rewrite в контексте .htaccess по сравнению с контекстом <Directory> или <VirtualHost> имеет несколько разные требования в том, как анализируются шаблоны. Что наиболее важно для вашей ситуации, в .htaccess первый аргумент RewriteRule не сопоставляется с ведущей косой чертой /, потому что шаблон рассматривается относительно каталога, в котором он находится.

Удалите ведущий / из аргумента сопоставления RewriteRule:

RewriteRule ^wp/wp\-json(.*) /wp\-json$1 [L,R]

Другие вопросы по теме