我目前正在从事React项目。我正在设置它以进行部署,因此使用“ npm run build”命令来构建它。
不幸的是,当我这样做并将/ build内容提供给apache网络服务器(在DigitalOcean或XAMPP本地服务器上)时,所有路由均无法正常工作,并引发404 not found错误。不过,首页工作正常,通过“ npm run start命令”运行该项目也是如此
我尝试过在线寻找解决方案,但还无法解决此问题。
答案 0 :(得分:0)
想分享一下,以防将来有人碰到这个问题:
这是假设Ubuntu用作操作系统:
从post from Reddit开始,我已经执行了某些步骤,我可以证明此方法可以使SPA通过正确的路由在Apache Web服务器中运行。
引用:
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>
相似之处。
127.0.0.1 yourdomain.com
3)我跑了sudo a2enmod rewrite
。然后,我通过service apache2 restart
重新启动了apache服务器。这将打开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开发时,我真的不确定我是否正确配置了VirtualHost,因此通常要做的是首先创建一个虚拟的index.html,例如Hello World示例。当我确认可以在浏览器中看到Hello World时(这意味着我正确配置了VirtualHost),我将build
文件夹的内容转储到虚拟index.html所在的位置。 / p>
希望现在对您的帮助与对我一样多!