Question

Je veux prendre des commandes de fichiers manquants dans un dossier spécifique et de les rediriger vers program.php dans ce dossier.

Ceci est un programme que je vais utiliser beaucoup dans des endroits différents, et je préférerais éviter de spécifier le nom du dossier dans le fichier .htaccess.

Je l'ai essayé de simplement mettre:

errordocument 404 program.php

mais le résultat est que le navigateur juste imprime "program.php" et n'exécute pas program.php.

Je comprends pourquoi ce qui se passe: en fonction de la documentation à l'adresse http://httpd.apache.org/docs/2.0/mod/core.html , URL qui ne commence pas par une barre oblique ou http sont interprétées comme un message texte.

La question est de savoir comment contourner cette limitation de pouvoir accéder au même dossier.

Était-ce utile?

La solution

Je fini par utiliser rewriterule au lieu de ErrorDocument :

rewriteengine on
rewritecond %{request_filename} !-f
rewriterule ^(.+).jpg$ program.php?i=$1.jpg [L]

La deuxième ligne vérifie que le fichier n'existe pas, de sorte que les images existantes seront affichés correctement.

Autres conseils

Vous voulez:

ErrorDocument 404 /program.php

Selon le docs , « URL peuvent commencer avec une barre oblique (/) pour les chemins web locaux (par rapport au DocumentRoot). "

Avez-vous essayé un chemin (relatif ou absolu)? Si vous le faites par rapport, il devrait être à la racine du Web, ce qui pourrait serveur votre but.

ErrorDocument 404 /program.php

Si vous avez seulement un petit nombre de dossiers, vous pouvez probablement utiliser:

<Directory /path/a>
   ErrorDocument 404 /a/program.php
</Directory>
<Directory /path/b>
   ErrorDocument 404 /b/program.php
</Directory> 
<Directory /path/c>
   ErrorDocument 404 /c/program.php
</Directory>

Si cela est impossible, alors vous ne devriez avoir un program.php à la racine et l'ont réagit différemment en fonction du contenu de la variable d'environnement REDIRECT_URL, qui est $ _SERVER [ « REDIRECT_URL »] en php.

Pourquoi ne pas avoir une poignée ErrorDocument toutes les erreurs dans tous les dossiers? Peut-être beaucoup plus propre de cette façon. Vous pouvez ensuite traiter le cas individuel en utilisant $ _SERVER [ « REQUEST_URI »] qui doit contenir la demande initiale si je me souviens bien.

Comment à ce sujet. Dans votre chemin racine, vous configurez un fichier error.php générique. Cependant, il ne fait analyser le REQUEST_URI, vérifiez le chemin, voir s'il y a un error.php personnalisé là, et comprennent cela. Pourrait travailler, hein?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top