AngularJS HTML5模式页面刷新出现NOT Found错误求助
解决AngularJS路由刷新404的问题
看起来你遇到的是前端路由刷新时的经典服务器404问题,我来一步步帮你解决:
1. 先确认AngularJS路由配置是否正确
先检查你的路由代码是否符合规范,比如类似这样的结构:
var app = angular.module("myApp", ["ngRoute"]); app.config(function($routeProvider) { $routeProvider .when("/", { templateUrl : "main.html" }) .when("/red", { templateUrl : "red.html" }) .otherwise({ redirectTo: "/" }); });
注意templateUrl对应的文件(比如red.html)要确实放在wamp/www/angular/7/目录下,路径别写错。
2. 解决服务器端重写问题(关键)
AngularJS的路由是前端路由,当你刷新angular/7/red时,浏览器会向Apache服务器请求这个路径,但服务器找不到名为red的物理文件或目录,所以返回404。我们需要让Apache把所有路由请求都转发到index.html,交给AngularJS处理。
具体操作:
- 首先启用Apache的
mod_rewrite模块:- 打开WAMP管理器,点击Apache -> Apache Modules,找到
rewrite_module并勾选,然后重启WAMP服务。
- 打开WAMP管理器,点击Apache -> Apache Modules,找到
- 在项目根目录(
wamp/www/angular/7/)下创建.htaccess文件,写入以下内容:
RewriteEngine On RewriteBase /angular/7/ RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /angular/7/index.html [L]
这段规则的作用是:如果请求的不是实际存在的文件或目录,就把请求转发到index.html,让AngularJS的路由系统来处理跳转。
3. 确认base href设置正确
你当前的<base href="/angular/7/">设置是正确的,不用启用注释里的动态生成代码,保持这个静态配置即可,它能确保所有相对路径都基于你的项目根目录。
完成以上步骤后重启WAMP服务,再刷新angular/7/red页面,应该就能正常显示内容了。
内容的提问来源于stack exchange,提问作者John Paul
相关产品推荐
相关产品推荐

