angularjs漂亮的网址不起作用

时间:2014-07-31 16:54:38

标签: angularjs angularjs-routing

我的问题是如果没有#,网址就无法运行。这是我的代码:

angular.module('Hiren', ['ngRoute'])
.config(function ($routeProvider, $locationProvider) {
    $routeProvider
        .when('/', {
            templateUrl: 'partials/login.html',
            controller: 'login'
        })
        .when('/redirect', {
            templateUrl: 'partials/postLogin.html',
            controller: 'postLogin'
        });

    $locationProvider.html5Mode(true);
});

当我尝试浏览url example.com/redirect时,它给了我404,但使用hash(example.com/#redirect)它完美地工作。

1 个答案:

答案 0 :(得分:2)

如果您在HTML5模式下获得404,则需要配置服务器以在服务器上发生404时为您的Angular应用程序(通常是index.html或app.html)提供服务。您没有提到您正在使用的服务器,因此我无法提供有关如何执行此操作的具体说明。这是一个服务器配置问题而不是Angular问题。

现在编辑服务器已知:

import SimpleHTTPServer, SocketServer
import urlparse, os

PORT = 3000

class MyHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
   def do_GET(self):

       # Parse query data to find out what was requested
       parsedParams = urlparse.urlparse(self.path)

       # See if the file requested exists
       if os.access('.' + os.sep + parsedParams.path, os.R_OK):
          # File exists, serve it up
          SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self);
       else:
          # redirect to index.html
          self.send_response(302)
          self.send_header('Content-Type', 'text/html')  
          self.send_header('location', '/index.html')  
          self.end_headers()

Handler = MyHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT
httpd.serve_forever()

Referenced SO answer.

相关问题