我想知道是否有人可以告訴我,當您將模式更改爲Angular js中的html5時,需要完成哪些服務器端更改。因爲當我嘗試將其更改爲html 5模式時,我無法進入我的內部html頁面。在Angular API中,它表示suers需要做一個服務器端更改。服務器端更改Angular html5模式
- 什麼是服務器端更改
- 做我們需要做任何其他的變化呢?
我想知道是否有人可以告訴我,當您將模式更改爲Angular js中的html5時,需要完成哪些服務器端更改。因爲當我嘗試將其更改爲html 5模式時,我無法進入我的內部html頁面。在Angular API中,它表示suers需要做一個服務器端更改。服務器端更改Angular html5模式
你應該區分兩種類型的呼叫:從瀏覽器
如何區分這兩種類型的調用,以及如何重新映射前者,很大程度上取決於您的設置。
如果使用nginx的,例如,檢查$ HTTP_ACCEPT的組合是application/json
(見http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Requests和http://wiki.nginx.org/HttpCoreModule#.24http_HEADER)和重寫(http://wiki.nginx.org/HttpRewriteModule#rewrite),你可以達到你想要的東西。
你需要設置你的服務器重寫一切index.html的每個: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>
我的應用程序已經PARAMS傳遞給控制器(通過UI路由器),所以html5mode我會轉到前 www.blah.com/angapp/#/myUIrouterController?param_x=1 & param_y = 2 猜測瀏覽器知道/#/文件夾路徑部分應該爲index.html提供服務。
現在,#將與html5mode一起消失,服務器默認情況下不知道爲該文件夾提供index.html,因爲url只是: www.blah.com/angapp/myUIrouterController?param_x= 1 & param_y = 2 myUIRouterController不是一個真正的文件,所以服務器只會提供一個404,因此爲什麼我認爲需要重寫,所以它知道要發送一切到index.html(所以上面結合<基地>標籤應該工作...注意:requireBase是可選的,但聽說它可以幫助IE9等舊版瀏覽器)。
我還沒有做過這件事,但我相信你需要重寫你的URL,以便它們指向你的index.html(即當你請求'/ index.html'時,服務器會輸出'/ index.html' /接觸/倫敦office')。如果您使用的是Apache,請查看'mod_rewrite'。 –