2017-05-07 62 views
1

我目前正在學習Angular。我已經使用HashLocation實現了路由器,因爲PathLocation在Apache服務器中不起作用。我經歷了各種各樣的帖子來解決這個問題,但最終還是要用Apache的HashLocation解決。HashLocation策略有什麼不足嗎?

我只想知道,如果存在HashLocation的任何缺點,就像有沒有與HashLocation無效的任何Angular功能,我可以使用HashLocation生產準備應用程序?

+1

一些@GünterZöchbauer糾正我,如果我錯了,但你也不能使用服務器端與HashLocation戰略AFAIR渲染可能會考慮結果URL醜陋 –

+0

。 – echonax

+1

我不知道服務器端渲染,但我可以想象這是真實的。 –

回答

2

據,https://angular.io/docs/ts/latest/guide/router.html#!#which-strategy-is-best-

幾乎所有角項目應該使用默認的HTML5風格。它生成更容易讓用戶理解的URL。它保留了稍後進行服務器端渲染的選項。

服務器端渲染使您的應用程序更快,更安全。

+0

但它(HashLocation)不能用於Apache(至少我不能配置它)。那麼Angular 2與大多數共享主機無關,它使用apache? – raju

+0

@raju我不知道你使用的是什麼設置,但我建議你看一看angular-cli,它使得一切都變得簡單。這裏有一個類似的問題回答了一個問題:http://stackoverflow.com/questions/38183800/angular-cli-routing-doesnt-work-on-apache-server – echonax

+0

我根據鏈接設置.htaccess + httpd.conf ,但仍然在重新加載404頁面。 – raju

1

乾淨的URL /路徑位置策略的優點包括: A.搜索引擎友好性 B.緩存資源或靜態資產。

如果這2個可以忽略你的用例,你可以去散列位置策略。

在apache中配置路徑位置 您需要將其添加到.htaccess文件中。

RewriteEngine On # If an existing asset or directory is requested go to it as it is RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR] RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d RewriteRule^- [L] # If the requested resource doesn't exist, use index.html RewriteRule^/index.html