reactjs - React Router 在 Apache 上的子目录中部署时不起作用
问题描述
我在将我的反应应用程序部署到 appache 上的子目录时遇到了很大的问题。我正在使用 create-react-app 和 React 路由器 v4。当我访问网址 www.example.com/myApp 时。当我的主页正确呈现时,我正在呈现的 html。
但是,如果我尝试通过在地址栏中手动输入路线来访问注册页面,我会收到 404 Not found 错误。
我做了什么。
- 我已将 BrowserRouter 的基本名称设置为子目录。
- 我还在 package.json 中设置了主页属性。
- 我已经创建了 .htaccess 文件。
请我已经在这几天试图弄清楚我做错了什么,但我似乎无法弄清楚。
解决方案
Apache 尝试为请求的路由查找资源。您需要将所有请求重定向到您的索引,以便可以加载反应包并且反应路由器可以做它的事情
这已经解决了几次,所以我会参考其他有用的答案
通过添加以下 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>
推荐阅读
- java - 重命名文件不会重命名内容解析器中的信息
- arrays - 数组调用中的变量导致错误替换
- ruby-on-rails - 获取 ice_cube 重复规则的轮换用户
- uitableview - 为什么方法 didDeselectItemAt 不调用?
- mysql - 查询以获取逗号分隔的 varchar 中选定值中的值
- python - 熊猫在 2 个键上加入一列
- haskell - 指示堆栈构建可执行文件的目标目录
- localization - Blazor Server 应用程序中的全球化和本地化
- python - 如何获取字符串列表作为函数的输入并获取函数返回的列表
- python - ModuleNotFoundError - 在运行 uvicorn 时导入 Python 未得到解决