为 AngularJs App 重写 Htacess

为 AngularJs App 重写 Htacess

我需要有关 AngularJs 应用程序的帮助。我需要 AngularJS 和 Hashbang fallback 中的 HTML5Mode 的 htacess 文件。有人能帮我吗?因为我使用反斜杠时会出现 %2F。我一直​​在关注这个教程,但他们使用的是 express。 https://scotch.io/tutorials/angularjs-seo-with-prerender-io

HTML

<html lang="en" ng-app="WebApp">
<head>
    <meta charset="UTF-8">
    <base href="http://localhost/myapp/">
    <meta name="fragment" content="!" />
</head>

这是我的主要内容

var app = angular.module('WebApp', ['ngRoute']) 

app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){ 

  $routeProvider.when('/', { 
    templateUrl : 'views/home.html', 
    controller: 'PageCtrl' 
  })

  $routeProvider.when('/about', {
      templateUrl : '/views/about.html',
      controller: 'PageCtrl'
  })


  $routeProvider.otherwise({
          redirectTo : '/'
  });

  $locationProvider.html5Mode(true);
  $locationProvider.hashPrefix('!');
}]);



function PageCtrl($scope) { 
  // For this tutorial, we will simply access the $scope.seo variable from the main controller and fill it with content. 
  // Additionally you can create a service to update the SEO variables - but that's for another tutorial. 

}

这是我试图访问控制正确的

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]

答案1

问题在于 apache 和编码的斜杠。/ 被转换为 %2f,这是斜杠的代码。在 vhost 文件中允许使用编码的斜杠应该可以解决问题。

相关内容