загрузка веб-сайта WordPress по определенному маршруту приложения react

#reactjs #wordpress #.htaccess #subdomain

#reactjs #wordpress #.htaccess #поддомен

Вопрос:

я разместил свое приложение react в домене example.com когда я ударил example.com/blog я хочу загрузить свой сайт WordPress. Для этого я поместил wordpress в папку с именем blog внутри общедоступной папки приложения react для этого я поместил файл .htaccess в общедоступную папку, чтобы справиться с этим

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog1
RewriteRule ^blog1$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ./blog1 [L]
</IfModule>
 

но у меня это не сработало.
возможно, я использую неправильный подход для достижения этой цели, поскольку у меня нет большого опыта в react.

Ответ №1:

Самый простой способ, который сработал для меня:

  1. У вас должен быть PHP-сервер.
  2. Создайте свое приложение react и загрузите его через FTP в public_html.
  3. Загрузите wordpress в папку public_html / blog и настройте для него db.
  4. Обновите свой файл .htaccess для маршрутизации React:
 <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteRule . /index.html [L]
</IfModule>
 

Файл wordpress .htaccess по умолчанию после установки в подкаталог:

 # BEGIN WordPress

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  RewriteBase /blog/
  RewriteRule ^index.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress
 

Комментарии:

1. Что WordPress вставляет в .htaccess при установке в подкаталог? Можете ли вы добавить это в свой ответ и показать, что содержимое WordPress в .htaccess должно быть перед маршрутизацией react?

2. Хорошо, я добавил .htaccess для wordpress.

Ответ №2:

Не зная больше о проблеме.

  1. Возможно, вам потребуется убедиться, что приложение react и приложение WordPress используют разные пути uri, если они оба работают в одном домене.
  2. Вам нужно ссылаться вне приложения, когда вы делаете запрос на тему WordPress, и наоборот, когда вы ссылаетесь на свое приложение react. Использование тега a вместо обычной ссылки react. например, использование традиционного тега, а не компонента
  3. Вероятно, вам потребуется использовать файл обратного прокси-сервера и настроить его для запуска двух приложений на одном сервере.
  4. Вы можете использовать специальную библиотеку react, разработанную для WordPress под названием Frontity. Эта страница может помочь прояснить ситуацию. Подключение к интерфейсу WordPress

Комментарии:

1. будет полезно, если вы опишете пункты 2 и 3 на примере, спасибо

2. Я обновил сообщение после проведения некоторых исследований. Похоже, вам нужно перенаправлять запросы с использованием обратного прокси. Таким образом, у вас будет одна и та же конечная точка для доступа как к сайту WordPress, так и к приложению react. Вам просто нужно указать маршруты, к которым приложение должно получить доступ. например: localhost: 80 / app1 указывает на localhost: 8000, а localhost: 80 / app2 указывает на localhost: 8001

3. code <VirtualHost *:80> Имя_сервера react.local ProxyPreserveHost На ProxyPass / blog localhost:80 ProxyPassReverse / blog localhost:80 ProxyPass / localhost:3000 ProxyPassReverse / localhost:3000 </VirtualHost> code сделал эту настройку в conf-файле apache, но все равно перенес ее только на порт 3000