部署在Apache上的子目录

时间:2019-12-09 15:00:18

标签: reactjs apache react-redux react-router subdirectory

将我的react应用程序部署到appache上的子目录时遇到了很大的问题。 我正在使用create-react-app和React Router v4。 当我访问网址www.example.com/myApp时。我的网页正确呈现时呈现的html。

但是,如果我尝试通过在地址栏中手动输入路线来访问注册页面,则会收到404未找到错误。

我做了什么。

  1. 我已将BrowserRouter的basname设置为子目录。
  2. 我还在package.json中设置了主页属性。
  3. 我已经创建了.htaccess文件。

请问我已经有好几天了,试图弄清楚我在做什么错,但我似乎无法弄清楚。

1 个答案:

答案 0 :(得分:0)

Apache尝试为请求的路由查找资源。您需要将所有请求重定向到索引,以便可以加载react捆绑包,并使react-router能够完成

这个问题已经解决了几次,所以我将参考其他帮助性答案

通过添加以下Rewrite *行来更改VirtualHost配置(通常在/etc/httpd/conf.d\vhosts.conf中找到):

<VirtualHost *:8080>
  ServerName example.com
  DocumentRoot /var/www/httpd/example.com

  <Directory "/var/www/httpd/example.com">
    ...

    RewriteEngine on
    # Don't rewrite files or directories
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    # Rewrite everything else to index.html to allow html5 state links
    RewriteRule ^ index.html [L]
  </Directory>
</VirtualHost>

SOURCE