Je veux définir un document d’erreur 404 personnalisé, mais j’ai un problème avec ça!
Premièrement, j’ai deux RewriteRules dans mon fichier .htaccess:
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/?$ /$2/$3.php?lang=$1 [L] RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)/?$ /$2/$3/$4.php?lang=$1 [L]
Donc mon URL ressemble à: / de-de / page / autre / stuff et opend /page/other/stuff.php?lang=de-de
Maintenant, il est temps de définir mon propre document d’erreur: ErrorDocument 404 /404.php
S’il y a une erreur dans “/ de-de / page / autre /” par exemple “/ de-de / false / page /” j’ai eu le document d’erreur avec succès. Mais s’il y a une erreur dans le nom du fichier php (par exemple “Info-mal” au lieu de “Objets”), je reçois uniquement le message “Fichier introuvable”. mais pas mon document d’erreur.
Qu’est-ce qui ne va pas? Que puis-je faire pour le réparer?
Merci de votre aide!
AuthType Basic AuthName "Password Protected Area" AuthUserFile /var/www/vhosts//development/tests/demo./.htpasswd Require valid-user RewriteEngine on RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,QSA] RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/?$ /$2/$3.php?lang=$1 [L] RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)/?$ /$2/$3/$4.php?lang=$1 [L] ErrorDocument 404 /404.php
Apache Error Log:
[404] GET /de-de/support/support/fdfssdf HTTP/1.0 AH01071: Got error 'Primary script unknown\n'
Utilisez RewriteCond
pour vérifier si le fichier php existe:
RewriteCond %{REQUEST_URI} ^/([^/.]+)/([^/.]+)/([^/.]+)/?$ RewriteCond %{DOCUMENT_ROOT}/%2/%3.php -f RewriteRule ^ /%2/%3.php?lang=%1 [L] RewriteCond %{REQUEST_URI} ^/([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)/?$ RewriteCond %{DOCUMENT_ROOT}/%2/%3/%4.php -f RewriteRule ^ /%2/%3/%4.php?lang=%1 [L]