web-dev-qa-db-fra.com

ErrorDocument 404 /404.php ne fonctionne pas dans le fichier .htaccess dans PHP

J'ai un fichier .htaccess dans le répertoire racine et également un fichier 404.php. Le contenu de mon fichier .htaccess est:

ErrorDocument 404 /404.php 

Mais lorsque je suis en train de mal épeler mon URL, 404.php ne s'ouvre pas. Au lieu de cela, je reçois le message suivant:

Pas trouvé

L'URL demandée /mywebsite/ites.php est introuvable sur ce serveur.

En outre, une erreur 404 Introuvable a été rencontrée lors de la tentative de utilisez un ErrorDocument pour gérer la demande.

Mais quand j'ai essayé ErrorDocument 404 google.com, ça a fonctionné.

16
user1556433

Je vais consolider mes commentaires à cette réponse:

Lors du réglage ...

ErrorDocument 404 /404.php

le chemin d'accès /404.php peut ne pas être le chemin absolu de la racine de votre dossier htdocs, mais plutôt la racine de votre système de fichiers. Cela peut être, en fonction de votre configuration, par exemple. /home/htdocs/ ou ~ et ainsi de suite.

Il faut donc trouver le chemin absolu et le définir en conséquence.

15
conceptdeluxe

Où se trouve réellement votre 404.php par rapport à votre fichier .htaccess? Pouvez-vous simplement l'exécuter comme une URL directe? Le fichier est-il lisible par le serveur? Ou est-ce dans un sous-répertoire imbriqué? Vous pouvez également essayer l'URL complète:

ErrorDocument 404 http://mygreat.server/404.php 

Tous les détails dans la documentation officielle d'Apache ici .

12
JakeGould

Vous utilisez ErrorDocument like so:

ErrorDocument <3-digit-code> <action>

Vous avez trois types d'action qui sont déclenchés par ce que vous tapez:

L'action sera traitée comme:

  1. Une URL locale à rediriger si l'action commence par un "/".
  2. Une URL externe à rediriger si l'action est une URL valide.
  3. Texte à afficher (si aucune des réponses ci-dessus). (Le texte doit être placé entre guillemets (") s'il contient plusieurs mots.)

Par exemple.

Texte personnalisé: ErrorDocument 404 "Oops! We can't find that pesky file. Sorry."

Chemin local: ErrorDocument 404 /local/path/to/404.php

URL externe: ErrorDocument 404 http://external_url.example.com/server_error.html

Vous avez choisi un fichier local mais vous ne liez probablement pas correctement du point de vue du serveur. Les chemins d'accès aux serveurs locaux ne sont pas ce que vous voyez dans votre URL et incluent souvent des éléments tels que ~/htdocs/www/domainname/

Le problème est probablement que votre chemin d'accès à 404.php est incorrect et que votre serveur ne peut pas le trouver.

1
Chuck Le Butt