2017-05-07 42 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