J'utilise IIS 7 serveur Web et j'obtiens une erreur 404 lorsque je tente de télécharger un fichier portant le symbole #
, n'importe où dans le nom du fichier.
http://www.server.com/files/my#filename.doc <- ne télécharge pas mène à l'erreur 404.
Si je supprime le symbole #
, cela fonctionne correctement.
Quelqu'un peut-il suggérer pourquoi cela se produit et s'il existe une solution de contournement?
Merci
Voulez-vous dire que le # est présent dans le nom du fichier lui-même?
Le # est un caractère significatif dans le schéma d'URL ( voir RFC 3986 ). Il sépare le chemin de l'URL du fragment id .
Il se peut que vous deviez échapper à l'octothorpe.
Je suis d'accord avec les réponses précédentes d'échapper le symbole '#' à '% 23'. Lorsque vous traitez avec des noms de fichiers sur un site Web, il est également judicieux d'éviter d'utiliser des caractères spéciaux et des espaces pour éviter les problèmes de compatibilité. En outre, du point de vue du référencement, prenons l'exemple suivant:
http://mydomain.com/ThisIsMyKeywordFileName.pdf
Certains moteurs de recherche pourront analyser un mot-clé en dehors de ce nom de fichier, mais d'autres détermineront que 'thisismykeywordfilename' est un mot. Si vous le changez comme suit:
http://mydomain.com/This-Is-My-Keyword-File-Name.pdf
Les moteurs de recherche pourront alors décomposer les mots-clés de vos noms de fichiers. Si vous utilisez des espaces dans le nom du fichier, vous pouvez vous retrouver avec une URL codée dans votre barre d'adresse qui ressemble à ceci:
http://mydomain.com/This%20Is%20My%20Keyword%20File%20Name.pdf .
Ce qui n'est pas réel agréable à regarder. Lorsque vous échappez le symbole '#', vous obtiendrez des noms de fichiers échappés ressemblant à l'exemple ci-dessus. Une bonne stratégie, dans la mesure du possible, serait de simplifier le nommage de vos fichiers. Sinon, vous devez utiliser des caractères spéciaux masqués.
Vous pouvez essayer d’encoder le nom du fichier comme suit.