2015-06-28 19 views
5

Tôi đã tìm kiếm rất nhiều trực tuyến để có câu trả lời cho điều này nhưng chưa tìm thấy bất kỳ điều gì.Xử lý các tuyến đường mà không sử dụng băm bằng angular-ui-router

Ngay bây giờ tôi có mã này trong tập tin của tôi mà tôi nghĩ sẽ xử lý tất cả các tuyến/khẳng định bên cạnh những cái tôi đã chỉ định:

$urlRouterProvider.otherwise('/'); 

Tuy nhiên, chức năng này chỉ hoạt động cho đường dẫn như localhost:1337/#/stuff, nhưng nếu Tôi nhập số localhost:1337/stuff, tôi gặp lỗi máy chủ nội bộ xấu xí.

Lý tưởng nhất, tôi muốn localhost:1337/stuff hoặc bất kỳ URL nào khác không có mã băm để chuyển hướng đến localhost:1337/#/ (trang chủ của ứng dụng của tôi).

Bất kỳ suy nghĩ nào về cách tôi có thể thực hiện việc này?

Trả lời

2

Bạn cần phải thiết lập hai điều:

  1. Một cái gọi là "html5Mode" trong cấu hình AngularJS của bạn. Đó là phần dễ dàng: $locationProvider.html5Mode(true);
  2. Đặt ghi đè trên máy chủ của bạn để mọi yêu cầu chỉ hiển thị trang html chính của bạn.

Từ AngularJS docs on routing:

Sử dụng chế độ này đòi hỏi URL viết lại trên phía máy chủ, về cơ bản bạn phải viết lại tất cả các liên kết của bạn đến thời điểm nhập cảnh của ứng dụng của bạn (ví dụ index.html).

+0

Cảm ơn bạn đã trả lời! Tôi đoán nó có thể nằm ngoài phạm vi cho dự án của tôi rồi. – SYU88

0

Bạn có thể bật chế độ html5 trong app.js, cũng sẽ xóa hashbang khỏi liên kết trong dự án của bạn (localhost:1337/stuff thay vì localhost:1337/#/stuff).

Nếu đây không phải là hành vi bạn muốn, bạn sẽ phải ghi đè lên phía máy chủ.

Các vấn đề liên quan