首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在启用Html5模式的情况下使用Angular Ui Router时,页面重载失败

在启用Html5模式的情况下使用Angular Ui Router时,页面重载失败
EN

Stack Overflow用户
提问于 2015-04-29 14:47:07
回答 6查看 16K关注 0票数 15

我在我的Angular应用程序中使用了angular UI Router,并且通过在配置中使用$locationProvider启用了HTML5模式来删除URL中的#。

代码语言:javascript
复制
var app = angular.module('openIDC', ['ui.router']);
app.config(function($urlRouterProvider, $stateProvider, $locationProvider) {

    $locationProvider.html5Mode(true);

    $urlRouterProvider.otherwise('/');

    $stateProvider
    .state('home', {
        url: '/',
        templateUrl: 'views/home.html',
        controller: 'HomeController'
    })
    .state('login', {
        url: '/login', 
        templateUrl: 'views/login.html',
        controller: 'LoginController'
    })
});

我还在index.html文件中设置了<base href="/" />标记。路由工作正常,我可以导航到页面,#被删除,但当我使用浏览器上的reload按钮刷新页面时,出现了404错误响应。

为什么会发生这种情况?我如何修复它并启用HTML5模式以获得正确的URL

EN

回答 6

Stack Overflow用户

发布于 2015-04-29 15:04:39

你需要在服务器端设置url重写

对于apache,应该是这样的:

代码语言:javascript
复制
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.html

在apache文件中(确保启用了mod_rewrite apache模块)

nginx的配置如下:

代码语言:javascript
复制
location / {
    ....
    try_files $uri $uri/ /index.html =404;
}
票数 9
EN

Stack Overflow用户

发布于 2016-09-27 00:15:30

注意到一条关于IIS的评论--我还没有在这里看到--但这就是我的工作方式。确保安装了URL重写2.0。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="AngularJS Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>`
票数 4
EN

Stack Overflow用户

发布于 2015-12-26 01:21:48

首先生成.htaccess文件,然后复制这些代码

代码语言:javascript
复制
<ifModule mod_rewrite.c>
     RewriteEngine on

    # Don't rewrite files or directories
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]


    RewriteRule ^ your root folder/index.html [L]
      </ifModule>


<base url="/"></base> in index.html file
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29936224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档