如何设置apache2进行反应

时间:2017-12-28 21:27:57

标签: apache reactjs

我已经在apache2上运行应用程序。

在我的应用程序中,共有3页:home,about,register

我有3条这样的路线:

<Route path="/home" component={....} />
<Route path="/about" component={.....} />
<Route path="/register" component={....} />

因此,应用程序运行完美,当我访问www.onlyexampleurl.com时,app正确加载。我可以在家里列出,关于,注册罚款。

但问题是,当我直接访问www.onlyexampleurl.com/about时,我从apache获得404,因为应用程序是从根路径下载&#39; /&#39;。

我该如何解决?当我把www.onlyexampleurl.com/about放到浏览器上时,我想从我的应用程序加载关于页面的内容,但是我从apache得到了404.

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您需要将所有请求重定向到您的条目文件(假设它是index.html)。放入.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]

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

答案 1 :(得分:0)

这是对该问题的最新答复,但我愿意分享有效的方法。以防万一有人遇到相同的问题。

这是假设使用Ubuntu OS,但我在Linux上还没有成功:

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>

希望现在对您的帮助与对我一样多!