我试图上传React应用程序与多路线构建文件在DigitalOcean服务器上的子目录(/admin).当我们刷新页面.它显示404页面未找到.示例URL:http://example.com/admin/home
请检查以下.htaccess
文件命令
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /admin/
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ./index.html [L]
</IfModule>
而不是带有react build上载的系列。
1条答案
按热度按时间x8diyxa71#
如果
.htaccess
和index.html
文件位于/admin
子目录中,则.htaccess
文件应如下所示:请注意,最后一个规则中有3个参数,以 * 空格 * 分隔
(ie.
RewriteRule<space>.<space>index.html<space>[L]
):.
-单个点。pattern。匹配除文档根以外的所有内容。index.html
-* 替换 * 字符串。无斜杠前缀。[L]
- flags。L
指示最后一个规则并停止当前处理轮。还要注意,我已经完全删除了
RewriteBase
指令,并删除了 substitution 字符串开头的斜杠前缀,<IfModule>
Package 器也应该被删除。您的原始规则(上面)的语法不正确,因为您似乎完全遗漏了第一个参数,或者将两个参数合并为一个。
尝试将表单
RewriteRule ./index.html [L]
更改为RewriteRule ^ admin/index.html [L]
@拉文德·辛格13
由于
RewriteBase
指令仍然存在(并且.htaccess
文件无论如何都在/admin
目录中),这将导致错误地重写/admin/admin/index.html
(a 404)。RewriteRule ^admin/index.html [L]
@manish赫道
但是,您在第一个参数后省略了 * 空格 *,因此这不会有任何作用(规则不会匹配)。
我只在.htacess文件中放入了-------------,但我没有收到“找不到”消息。
我将检查.htaccess是否已启用并通知您。
是否启用了
.htaccess
?您是否可以访问服务器配置?请记住,如果您使用的是LiteSpeed(而不是Apache),那么在文件顶部键入
-----
将被忽略-没有错误。