2013-06-04 44 views
5

Tôi đã tự hỏi liệu có ai có thể cho tôi biết những thay đổi phía máy chủ cần thực hiện khi bạn thay đổi chế độ của mình thành html5 trong js Angular hay không. bởi vì khi tôi đã cố gắng để thay đổi nó sang chế độ html 5 tôi đã không thể đi vào các trang html bên trong của tôi. trong Angular API nó nói rằng suers cần phải làm một thay đổi phía máy chủ là tốt.Thay đổi phía máy chủ ở chế độ góc html5

  1. thay đổi bên phía máy chủ
  2. chúng ta có cần thực hiện bất kỳ thay đổi nào khác không?
+0

Tôi chưa tự làm điều này, nhưng tôi tin rằng bạn cần viết lại URL của mình để chúng trỏ tới index.html của bạn (nghĩa là máy chủ sẽ xuất '/ index.html' khi bạn yêu cầu một cái gì đó như'/liên lạc/london-office'). Nếu bạn đang sử dụng apache, hãy nhìn vào 'mod_rewrite'. –

Trả lời

0

Bạn nên phân biệt hai loại cuộc gọi:

  1. cuộc gọi HTML từ trình duyệt. Đây nên được tất cả các remapped để phục vụ chỉ số của bạn hoặc bất cứ điều gì.
  2. yêu cầu API JSON. Chúng sẽ được chuyển đến máy chủ ứng dụng của bạn.

Cách phân biệt giữa hai loại cuộc gọi này và cách remap cũ, phụ thuộc nhiều vào thiết lập của bạn.

Nếu bạn đang sử dụng nginx, ví dụ, một sự kết hợp kiểm tra $ http_accept là application/json (xem http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Requestshttp://wiki.nginx.org/HttpCoreModule#.24http_HEADER) và viết lại (http://wiki.nginx.org/HttpRewriteModule#rewrite), bạn có thể đạt được những gì bạn muốn.

0

Bạn cần phải thiết lập máy chủ của bạn để viết lại tất cả mọi thứ để index.html mỗi: https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode ...

<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> 

Ứng dụng của tôi đã params truyền cho một bộ điều khiển (thông qua ui-router) vì vậy trước khi html5mode tôi sẽ goto www.blah.com/angapp/#/myUIrouterController?param_x=1 & param_y = 2 Đoán trình duyệt biết rằng/#/phần đường dẫn thư mục sẽ phân phối index.html.

Bây giờ, # sẽ biến mất với html5mode, máy chủ theo mặc định không biết để phục vụ index.html cho thư mục đó vì url sẽ chỉ là: www.blah.com/angapp/myUIrouterController?param_x= 1 & param_y = 2 myUIRouterController không phải là tệp thực để máy chủ chỉ phục vụ 404, Vì vậy, tôi nghĩ rằng viết lại là cần thiết để nó biết gửi mọi thứ tới index.html (như trên kết hợp với số < cơ sở > thẻ nên hoạt động ... lưu ý: requireBase là tùy chọn nhưng nghe nó giúp các trình duyệt cũ hơn như IE9 có thể).

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