Как перенаправить корневую папку как подпапку на сайт? - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь реализовать WordPEST REST API с помощью React.Современное соглашение, кажется, устанавливает API как подпапку к домену, т.е.

https://sitename.com/api/v1

I want to be able to go to 
https://sitename.com/api/v1/wp-admin

And be able to sign into wordpress and have it so the REST api is accessed like:

https://sitename.com/api/v1/wp-json/wp/v2/pages

У меня есть такая файловая структура:

Внутри api/ - установка WordPress.Если я включаю API в общую папку и указываю на папку сборки с виртуальным хостом, он работает как нужно, за исключением того факта, что при сборке приложения React он очищает установку Wordpress и перезапускает весь этот процесс.

Я попытался установить виртуальный хост в подпапку, но он все еще возвращает 404.

Редактировать: Чтобы получить простой пример этого запуска:

yarn create-react-app dir_name
cd dir_name
mkdir api
cd api
wp core download
# Add virtual host
# Generate SSL Cert

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Лучшее, что я придумал, - это присоединить символическую ссылку к каталогу api/ и связать ее с каталогом build/.

# Source->Destination
ln -s /var/www/site.com/public/api /var/www/site.com/build/

В зависимости от конфигурации, вам может потребоваться изменитьapi/ группируйте, как только вы сделаете yarn build, чтобы сервер имел доступ к Wordpress (например, для добавления плагинов).

Быстрый просмотр:

ln -s /var/www/site.com/api /var/www/site.com/public/
yarn build/
sudo chown -R :www-data build/

Редактировать: Я недавноПринято то, что кажется лучшим подходом, использующим виртуальный хост Apache.

Сначала я сегментировал свой корневой каталог на frontend и каталог backend.Внутри интерфейса находится вывод create-react-app.Внутри backend есть api/wp.Я вложил Wordpress в каталог api, если проект должен был когда-либо расширяться и включать несколько apis, все они будут сгруппированы в одном месте.

Вот структура каталогов

image

Внутри бэкэнда .htaccess - перенаправление на установку WordPress

RewriteEngine On
RewriteBase /api
RewriteCond %{REQUEST_URI} !^/api/wp
RewriteRule (.*) wp/$1 [R=302,L]

Внутри WordPress - пустая тема, созданная мной, которая перенаправляет на URL-адрес приложения реакции, в данном случае,isma.test.

0 голосов
/ 24 декабря 2018

Я полагаю, что если вы установите WordPress в подпапке / api, это считается корнем для экземпляра WP, поэтому префикс REST API добавляться не будет.

Для этого вам нужно использовать "rest_url_prefix "фильтр.Что-то вроде:

add_filter( 'rest_url_prefix', 'change_api_slug');
function change_api_slug( $slug ) {

    return 'api';

}

Вот очень хорошая статья: https://buddydev.com/modifying-api-base-url-prefix-for-wp-rest-api-plugin/

Надеюсь, это поможет:)

...