Angular JS编码的URL显示404 Pag

时间:2016-09-14 13:20:55

标签: javascript angularjs .htaccess

我创建了AngularJS Application。

使用以下网址正常工作:

http://localhost/AngularDemo/about

如果我像下面那样修改上述网址,则会将我带到404页面:

http://localhost/AngularDemo%2Fabout

我在.htaccess文件中做了一些更改

RewriteEngine on
# Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]

# Rewrite everything else to index.html to allow html5 state links
RewriteRule ^  index.html#! [L]

2 个答案:

答案 0 :(得分:0)

这是默认的Apache行为。 URL路径中的URL编码斜杠(即%2F)将隐式触发系统生成的 404.这被视为"安全功能"。

如果您需要明确允许URL中的编码斜杠,那么您可以在服务器配置中启用此功能:

AllowEncodedSlashes On

参考:
https://httpd.apache.org/docs/2.4/mod/core.html#allowencodedslashes

  

某些用户代理如Linked In ...

但是,这通常不是问题。 "用户代理"不应该以这种方式编码URL。 /AngularDemo%2Fabout可能是与/AngularDemo/about不同的网址。

答案 1 :(得分:0)

我解决了以下代码。您可以在app.js文件中写入

 $locationProvider.hashPrefix('');