2016-09-14 5 views
2

私はAngularJSアプリケーションを作成しました。Angular JS Encoded URLは404 Pagを示します

それは以下のURLで正常に働いています:

http://localhost/AngularDemo/about 

それが404ページに私を取って以下のように私は上記のURLを変更する場合:私は、.htaccessファイルでいくつかの変更を行っている

http://localhost/AngularDemo%2Fabout 

ファイル

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] 
+1

は、なぜあなたはあなたのURLにエスケープエンコーディングを使用するファイルあなたapp.jsに書くことができ、以下で解決しまった – spongessuck

+0

Linked Inのようなユーザーエージェントでは、上記のようにエンコードされたURLを取得します。そのURLをアプリケーションで使用すると、404ページになります。上記のURLはサンプルです –

答えて

0

これはデフォルトのApache動作です。 URLパスにURLでエンコードされたスラッシュ(つまり、%2F)は、というシステムで暗黙的に生成されます。 404です。これは「セキュリティ機能」とみなされます。

あなたの場合明示的にURLでエンコードされたスラッシュを許可する必要があり、あなたはあなたのサーバ設定でこれを有効にすることができます。

AllowEncodedSlashes On 

参考:ようないくつかのユーザエージェントによって
https://httpd.apache.org/docs/2.4/mod/core.html#allowencodedslashes

をリンクされた...

Hこれは通常、問題ではありません。 "User-agents"はこのようにURLをエンコードするべきではありません。 /AngularDemo%2Faboutは、/AngularDemo/aboutと異なる可能性があります。私はcode.Youが

$locationProvider.hashPrefix(''); 
関連する問題