#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:
Самый простой способ, который сработал для меня:
- У вас должен быть PHP-сервер.
- Создайте свое приложение react и загрузите его через FTP в public_html.
- Загрузите wordpress в папку public_html / blog и настройте для него db.
- Обновите свой файл .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:
Не зная больше о проблеме.
- Возможно, вам потребуется убедиться, что приложение react и приложение WordPress используют разные пути uri, если они оба работают в одном домене.
- Вам нужно ссылаться вне приложения, когда вы делаете запрос на тему WordPress, и наоборот, когда вы ссылаетесь на свое приложение react. Использование тега a вместо обычной ссылки react. например, использование традиционного тега, а не компонента
- Вероятно, вам потребуется использовать файл обратного прокси-сервера и настроить его для запуска двух приложений на одном сервере.
- Вы можете использовать специальную библиотеку 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