刷新页面显示“找不到页面”

我有一个应用程序,它使用一个ng-view和多个控制器和视图。如果我浏览根目录,例如:www.domain.com,则一切正常。除非我按Ctrl +R(刷新),否则会显示404错误页面未找到。例如:刷新此页面给我错误。http://domain.com/item/1/。

但是,如果我使用hashbang访问页面,则它可以工作。例如:http://domain.com/#!/item/1/

我该如何解决这个问题?我的空手道是空的。我使用支持html5 hashbang的chrome。

回答:

当浏览器调用时http://example.com/#!/item/1/,它正在调用的索引页http://example.com/,然后您的JS通过分析主题标签来确定要显示的内容。

当浏览器调用时http://example.com/item/1/,您的服务器正在尝试提供的索引页http://example.com/item/1/,但是找不到该索引页,因此会引发404错误。

要实现您想要的目标,您要么需要:

  • 创建重写规则以重写指向根索引页面的链接
  • 调整您的JS,以便它生成井号而不是URL。如果您使用的是AngularJS $locationProvider.html5Mode(false);,请使用或关闭html5模式
  • 将索引页放在http://example.com/item/1/重定向到的页面http://example.com/#!/item/1/-但是请注意,您创建的每个/ prettyPath /都需要重复执行此操作。

假设您正在使用Apache,并且索引文件为index.html,请在尝试其他两种解决方案之一之前,尝试将以下内容添加到.htaccess文件中以创建重写规则。

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*) /index.html/#/$1

</IfModule>

如果您使用的是不带服务器端逻辑的纯AngularJS /Ajax解决方案,请将index.php更改为index.html(或index.htm,具体取决于您的根索引文件名)。

以上是 刷新页面显示“找不到页面” 的全部内容, 来源链接: utcz.com/qa/414611.html

回到顶部