首页 > 解决方案 > AngularJS - 删除 Hashbang 后页面重新加载时出现 404 错误

问题描述

从我的路线中删除 hashbang 后使用

$locationProvider.html5Mode(true);

现在,当访问一个页面时,例如“domain.com/download”,它就可以工作了。但是如果我重新加载这个确切的页面,它会给我一个 404 错误。像“domain.com/download”这样的链接只能通过输入“domain.com/#!/download”来打开。加载后,它将再次将我重定向到正常的“domain.com/download”页面。

我使用 v1.3.2 进行路由,其余使用 v1.6.3 (不要问我为什么我没有创建这个站点,哈哈)。

标签: javascriptangularjshashbang

解决方案


这就是AngularJS 文档所说的:

使用这种模式需要在服务器端重写 URL,基本上你必须重写所有指向应用程序入口点的链接(例如 index.html)。在这种情况下,需要一个标签也很重要,因为它允许 AngularJS 区分作为应用程序基础的 url 部分和应该由应用程序处理的路径。

您必须将您的更改.htaccess为:

RewriteEngine On 
Options FollowSymLinks

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /#/$1 [L]

推荐阅读