如何为react设置apache2

如何为react设置apache2,apache,reactjs,Apache,Reactjs,我在apache2上运行了react应用程序 在我的应用程序中,有3个页面:主页、关于、注册 我有三条这样的路线: <Route path="/home" component={....} /> <Route path="/about" component={.....} /> <Route path="/register" component={....} /> 所以,应用程序工作得很好,当我访问www.onlyexampleurl.com时,应用程序加载

我在apache2上运行了react应用程序

在我的应用程序中,有3个页面:主页、关于、注册

我有三条这样的路线:

<Route path="/home" component={....} />
<Route path="/about" component={.....} />
<Route path="/register" component={....} />
所以,应用程序工作得很好,当我访问www.onlyexampleurl.com时,应用程序加载正确。我可以在家里登记,大约,登记好

但问题是,当我直接访问www.onlyexampleurl.com/about时,我从apache获得了404,因为应用程序是从根路径“/”下载的

我怎样才能修好它?当我把www.onlyexampleurl.com/about放到浏览器中时,我想从我的应用程序中加载关于页面的内容,但我从apache获得了INT404


谢谢你的帮助

您需要将所有请求重定向到条目文件,假设它是index.html。输入.htaccess:


这是单页应用程序的标准解决方案。

这是对这个问题的迟来回答,但我想我会与大家分享我的做法,以防有人碰到同样的问题

这是假设Ubuntu操作系统,我在Linux上没有成功:

我已经遵循了其中的某些步骤,我可以证明这对于使SPA在ApacheWeb服务器中以正确的路由运行是有效的

引述:

1位于etc/apache2/I的apache2.conf中,我将AllowOverride设置为All。我还在文件中添加了Servername localhost。我不知怎的跳过了最后一句话,但最后还是很管用

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
3我运行了sudo a2enmod重写。然后,我通过服务apache2重新启动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 dev时,我并不确定我是否正确地配置了VirtualHost,所以我通常首先使用Hello World示例创建一个虚拟index.html。当我确认我能够在浏览器中看到Hello World(这意味着我正确地获得了VirtualHost配置)时,我会将构建文件夹的内容转储到虚拟index.html所在的位置

希望这对你和我都有帮助

127.0.0.1 yourdomain.com
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^.*$ / [L,QSA]