.htaccess 刷新页面时显示“404页面未找到”,部署react build在子目录中

to94eoyn  于 2022-11-16  发布在  React
关注(0)|答案(1)|浏览(112)

我试图上传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上载的系列。

x8diyxa7

x8diyxa71#

如果.htaccessindex.html文件位于/admin子目录中,则.htaccess文件应如下所示:

Options +FollowSymLinks
DirectoryIndex index.html

RewriteEngine On

RewriteRule ^index\.html$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . index.html [L]

请注意,最后一个规则中有3个参数,以 * 空格 * 分隔
(ie. RewriteRule<space>.<space>index.html<space>[L]):

  • .-单个点。pattern。匹配除文档根以外的所有内容。
  • index.html-* 替换 * 字符串。无斜杠前缀。
  • [L]- flags。L指示最后一个规则并停止当前处理轮。

还要注意,我已经完全删除了RewriteBase指令,并删除了 substitution 字符串开头的斜杠前缀,<IfModule> Package 器也应该被删除。

RewriteRule ./index.html [L]

您的原始规则(上面)的语法不正确,因为您似乎完全遗漏了第一个参数,或者将两个参数合并为一个。

  • 来自评论... *

尝试将表单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),那么在文件顶部键入-----将被忽略-没有错误。

相关问题