在网址中删除#后重新加载时找不到页面错误 [英] Page not found error while reloading after removing # in Url

查看:49
本文介绍了在网址中删除#后重新加载时找不到页面错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

var app = angular.module("myApp", ["ngRoute","ui.router"]);
app.config(function($routeProvider,$urlRouterProvider,$locationProvider,$provide, $stateProvider) {

  $routeProvider
  .when("/", {
      templateUrl : "templates/main.htm"
  })
  .when("/london", {
      templateUrl : "templates/london.htm",
      controller:"ctrl"
  })
  .when("/paris", {
      templateUrl : "templates/paris.htm"
  });

$locationProvider.html5Mode(true);


});

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">

  <title>Bootstrap Example</title>
  <base href="/simpleAnjularjs/" />
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

</head>
<body ng-app="myApp">

<!-- routeProvider -->
 <a href="london">Red</a>
<a href="paris">Green</a>
<div ng-view></div>

<!-- stateProvider -->
<!-- <a ui-sref="red">Red</a>
<a ui-sref="green">Green</a>
<div ui-view></div> -->


<!-- <script src="js/angular.min.js"></script> -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<!-- <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-route.js"></script> -->
<script src="node_modules/angular-route/angular-route.js"></script>
<script src="js/Angularjs_ui_routing.js"></script>

<script src="app.js"></script>
</body>
</html>

其中使用的其他模板(london.html,paris.html,main.html)是带有默认

标记的普通html页面,当我重新加载任何页面时,我收到一条错误消息,提示请求的URL在此服务器上找不到/simpleAnjularjs/paris"

where other templates(london.html,paris.html,main.html) used are normal html pages with a default

tag and when i reload any of the pages i'm getting an error saying "The requested URL /simpleAnjularjs/paris was not found on this server"

推荐答案

方法:配置服务器以使用html5Mode

启用html5Mode后,URL中将不再使用#字符.#符号很有用,因为它不需要服务器端配置.如果没有#,则该URL看起来要好得多,但是它也需要服务器端重写.

When you have html5Mode enabled, the # character will no longer be used in your urls. The # symbol is useful because it requires no server side configuration. Without #, the url looks much nicer, but it also requires server side rewrites.

Apache重写

<VirtualHost *:80>
ServerName my-app

DocumentRoot /path/to/app

<Directory /path/to/app>
    RewriteEngine on

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

    # Rewrite everything else to index.html to allow html5 state links
    RewriteRule ^ index.html [L]
</Directory>
</VirtualHost>

Azure IIS重写

<system.webServer>
<rewrite>
<rules> 
  <rule name="Main Rule" stopProcessing="true">
    <match url=".*" />
    <conditions logicalGrouping="MatchAll">
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />                                 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="/" />
  </rule>
</rules>

这篇关于在网址中删除#后重新加载时找不到页面错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆