У меня есть пара приложений, которые будут работать на общем хосте Apache.Приложения размещаются в общем каталоге на сервере.Каждое приложение размещено в каталоге «build» в его главном каталоге.Каталог client
должен отображаться по умолчанию, а admin
должен отображаться по адресу example.com/app/admin.И, чтобы еще больше усложнить ситуацию, admin
использует React Router для внутренней маршрутизации.
Вот визуальное представление цели:
admin
|- build
|- index.html (example.com/app/admin, example.com/app/admin/page1, etc.)
client
|- build
|- index.html (example.com/app)
.htaccess
Так что мне нужно загрузить целевые страницы, покатакже позволяет React Router обрабатывать маршрутизацию для admin
.Я пробовал все комбинации RewriteCond и RewriteRule, о которых я могу подумать в .htaccess, но пока не повезло.Я чувствую, что приближаюсь к правилам ниже, но я все еще не совсем там.
// .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/admin/build
RewriteRule ^admin$ admin/build [L]
RewriteCond %{REQUEST_URI} !^(/client/build|/admin)
RewriteRule ^(.*)$ client/build [L]
</IfModule>
Это показывает / строит в адресной строке, и любой запрос к /admin/(.*) не удается перенаправить запросы файлов .css и .js в папку сборки (поэтому вместо этого он ищет / admin / static / css / вместо / admin / build / static / css), хотя они успешно загружаются при запросах к /admin.
РЕДАКТИРОВАТЬ: «App1» изменен на «client», а «App2» на «admin»;маскировка этих файлов не имеет смысла, и тот факт, что каталог имеет общее имя со страницей, может как-то иметь значение.