2015-12-23 3 views
1

Я хотел бы настроить мой веб-сервер Apache для обслуживания как приложения с одной страницей, так и процесса WSGI. Я могу успешно служить приложение WSGI на /api с помощью этой конфигурации:Apache обслуживает одностраничное приложение вместе с процессом WSGI с помощью AliasMatch

WSGIDaemonProcess myapp threads=5 user=apache 
WSGIScriptAlias /api /var/www/html/myapp/setup/myapp.wsgi 

Как таковой, если пользователь нажмет /api/things данные JSON из моего WSGI приложение (опоки) передается по.

И мой файл домой index.html (который подается, когда пользователь нажимает /) работает при включении этого:

DocumentRoot /var/www/html/myapp/myappweb/public 

Однако, когда пользователь посещает любой маршрут, который не начинается с /api Я хотел бы мой Apache веб-сервер для обслуживания index.html. Например, если пользователь нажмет /things или /things/42 Я хотел бы Apache, чтобы отправить их в index.html вместо того, чтобы бросать 404. (я использую Redux-маршрутизатор для обработки на стороне клиента пути.)

Я получил эту работу в моем Dev среде с использованием пакета живого сервера узла с этим флагом:

live-server --entry-file=index.html 

Кроме того, я могу использовать AliasMatch, чтобы заставить все маршруты, начиная с /things показать index.html:

AliasMatch "^/things(/.*)?$" /var/www/html/myapp/myappweb/public/index.html 

Но то, что я действительно хочу, является регулярным выражением AliasMatch, которое заставляет все маршруты, за исключением чего-либо, начиная с /api/, для отображения index.html.

ответ

1

Получил!

RewriteRule ^((?!\/[api|lib]).)*$ /var/www/html/myapp/myappweb/public/index.html 

мне нужно, чтобы исключить как api реж, а также lib реж (где мои JS/файлы CSS хозяйничаются).

 Смежные вопросы

  • Нет связанных вопросов^_^