关于这个主题有很多问题,当使用对生产的反应时,键入的URL和刷新不起作用,但我现在尝试了很长时间,并且由于某种原因它不起作用。
我正在使用React with Spring boot和tomcat。我正在使用BrowserRouter进行路由。我在aws弹性beanstalk上部署应用程序。当我部署时,我执行以下操作:运行npm run build
然后将生成文件夹中的结果文件复制到webContent文件夹,然后将项目导出为war文件并将其部署到aws。
据我所知,主要的解决方案是为所有请求服务index.html文件,我尝试了以下操作: - 将以下内容添加到/etc/httpd/conf/httpd.conf
<VirtualHost *:80>
DocumentRoot /var/lib/tomcat8/webapps/ROOT/
ServerName domain.elasticbeanstalk.com
AliasMatch ^/(.*)$ /var/lib/tomcat8/webapps/ROOT/index.html
<Directory "/var/lib/tomcat8/webapps/ROOT">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^/(.*)$ - [L]
RewriteRule ^/(.*)$ /index.html [L]
</Directory>
</VirtualHost>
从我读过的问题,建议使用/ var / www / html,但我没理解。我尝试通过复制从ROOT到它的所有内容来使用它,但也没有用。
我对配置文件中的代码尝试了很多变化。
通过配置,我得到错误SyntaxError: expected expression, got '<'
。在Firefox上,我得到The script from “http://awsdomain.com/static/js/2.7322c0fb.chunk.js” was loaded even though its MIME type (“”) is not a valid JavaScript MIME type.
在Chrome上我得到相同的错误,但使用css文件而不是js。
此时,我假设index.html的服务正在运行但是还有另一个问题,服务器正在尝试解析某些js或css文件,如html或文本,这些文件无效。在任何情况下,我都不知道如何告诉浏览器以正确的方式解析它们为什么它以正常方式解析它们没有错误(没有解决路由问题)?我试图在index.html中为链接和脚本标记添加type属性但是没有用。
我在aws实例的配置文件中特别厌倦了许多东西但是很难把它全部放在这里。我希望从评论中找到问题的根源,然后我可以提供任何缺失的信息。
我的问题终于得到解决。以下是我对httpd.conf的最后补充
<VirtualHost *:80>
DocumentRoot /var/lib/tomcat8/webapps/ROOT/
ServerName domain.elasticbeanstalk.com
<Directory /var/lib/tomcat8/webapps/ROOT>
Options FollowSymLinks MultiViews
AllowOverride All
Require all granted
DirectoryIndex index.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
</Directory>
</VirtualHost>
另外,默认情况下没有包含dir_module,这是DirectoryIndex所需要的。要包含它,请添加LoadModule dir_module modules/mod_dir.so
。