Хочу поделиться этим, если кто-то столкнется с этим вопросом в будущем:
Предполагается, что Ubuntu используется в качестве ОС:
Я следовал определенным шагам из этого сообщения от Reddit , и я могу засвидетельствовать эту работу для запуска SPA на веб-сервере Apache с правильной маршрутизацией.
Цитировать:
1) В apache2.conf
, расположенном в etc/apache2/
, я превратил AllowOverride
в All
. Я также добавил имя_сервера localhost в файл. (Я как-то пропустил это последнее предложение, но в конце оно все равно работало)
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
2) В файле hosts.debian.tmpl
, найденном в /etc/cloud/templates
, я добавил 127.0.0.1 <yourdomain.com>
к файлу, где находятся другие ips подобия.
127.0.0.1 yourdomain.com
3) Я бегал sudo a2enmod rewrite
. Затем я перезапустил сервер apache через service apache2 restart
. Это включает mod_rewrite.
Наконец, внутри папки моего проекта /var/www/html
, рядом с моим файлом index.html
я создал файл .htaccess
и добавил следующее:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^.*$ / [L,QSA]
Конечная цитата
Если вы запустили npm run build
, а затем скопировали все содержимое папки build
в общедоступный каталог, это должно сработать.
Когда я впервые запустил web dev, я не был уверен, что правильно настроил конфигурацию VirtualHost, поэтому обычно я сначала делал фиктивный index.html с, скажем, примером Hello World. Когда я подтвердил, что могу видеть Hello World в браузере (что означает, что я правильно настроил конфигурацию VirtualHost), я сбрасываю содержимое папки build
туда, где находился фиктивный index.html.
Надеюсь, это поможет вам сейчас так же, как и для меня!