web-dev-qa-db-ja.com

ファイル名に#を含むIIS7サーバーからのファイルのダウンロード

IIS 7 Webサーバーを実行しているときに、ファイル名のどこかに#シンボルを含むファイルをダウンロードしようとするとエラー404が発生します。

http://www.server.com/files/my#filename.doc <-ダウンロードしないと404エラーが発生します。

#シンボルを削除すると、正常に機能します。

なぜこれが起こっているのか、回避策がある場合は誰でも提案できますか?

ありがとう

2
Khalid Rahaman

ファイル名自体に#が存在すると言っていますか?

#は、URLスキームで意味のある文字です( RFC 3986を参照 )。 urlパスfragment idを分離します。

オクトソープを逃れる必要があるかもしれません。

2
Cheeso

%23にエスケープする必要があります。

したがって、次のようになります。

http://www.server.com/files/my%23filename.doc

1
vcsjones

「#」記号を「%23」にエスケープするという以前の回答に同意します。 Webサイトでファイル名を扱うときは、互換性の問題を避けるために特殊文字やスペースを使用しないことも経験則としてお勧めします。また、SEOの観点から、次の例を検討してください。

http://mydomain.com/ThisIsMyKeywordFileName.pdf

一部の検索エンジンは、このファイル名からキーワードを解析できますが、「thisismykeywordfilename」はすべて1つのWordであると判断します。次のように変更する場合:

http://mydomain.com/This-Is-My-Keyword-File-Name.pdf

検索エンジンは、ファイル名に含まれるキーワードを分解できます。ファイル名にスペースを使用すると、アドレスバーに次のようなエンコードされたURLが表示される場合があります。

http://mydomain.com/This%20Is%20My%20Keyword%20File%20Name.pdf

これは本物ではありません。 「#」記号をエスケープすると、上記の例のように見えるエスケープされたファイル名になります。可能であれば、ファイルの命名を簡素化することをお勧めします。そうでなければ、エスケープされた特殊文字を使用する必要があります。

1
Rob

次のようにファイル名をエンコードしてみてください。

http://www.server.com/files/my%23filename.doc

0
Kibbee