Hébergement Web-old - Petit problème htaccess et 404
... / Petit problème htaccess et 404
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Frage

Petit problème htaccess et 404

Von
pppplus
Erstellungsdatum 2017-03-20 21:12:35 (edited on 2024-11-18 11:10:17) in Hébergement Web-old

Bonjour à tous.

J'ai un petit problème de htaccess :
#redirection si rien trouvé avant
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([0-9a-zA-Z-_]+)\.html$ /$1.php [QSA]

ErrorDocument 404 /index.html?nopage

Concernant les fichiers html inexistants
Sur PHP 5.5, le ErrorDocument 404 marche et redirige correctement.
Sur PHP 7.1, il ne marche pas et envoie un "File not found. "
(ce que je trouve presque logique, vu la ligne précédente).

Question : comment faire marcher ce ErrorDocument, tout en gardant les réécritures précédentes ?

(pas de stable ou pas stable chez moi, c'est un dédié OVH)

Merci d'avance pour vos lumières, car là, je sèche !
J'ai changé l'ordre, en passant ErrorDocument avant, mais ça ne change rien
Si je supprime la réécriture des *.html, ça marche évidemment (mais j'en ai besoin !)


17 Antworten ( Latest reply on 2024-11-18 11:11:24 Von
JefR1
)

pour ta page 404, pourquoi ne pas mettre l'url directe ? puisque de toute façon, elle n’apparaît pas dans le navigateur ?

Pour moi ta page 404 devrait se trouvait sur 404.php (loin des règles de redirection).

Tu veux dire :
ErrorDocument 404 /404.php ?
=> C'est exactement la même erreur.
Le problème est que ça bloque sur "File not found. "

Si le fichier 404.php existe ça devrait marcher..

la 404.php est bien là, mais n'est pas appelée.

Le problème ne concerne que les pages xxx.html inexistantes.
Les autres pages inexistantes, sont correctement redirigées vers la page d'erreur (404 ou autre)

Il n'y a rien d'autre dans le htaccess ?

Car justement cette ligne
RewriteCond %{REQUEST_FILENAME} !-f
N appelle pas le rewrite si le fichier existe..

J'ai testé avec le fichier .htaccess vide, en ne laissant que les lignes que j'ai copié ici, pour éviter toute interférence inattendue.

Par contre, je ne suis pas d'accord :
RewriteCond %{REQUEST_FILENAME} !-f appelle le rewrite, si le fichier n'existe pas.

Exemple : /mapage.html (qui n'existe pas) est redirigée vers mapage.php

Mon problème, est de récupérer /mapage.html vers la 404, si mapage.php n'existe pas !


Par contre, je ne suis pas d'accord : RewriteCond %{REQUEST_FILENAME} !-f appelle le rewrite, si le fichier n'existe pas.


On dit la même chose avec les négations mises différemment ;)

Faudra que je teste pour ton cas.. Ca devrait marcher..

Un test bête
Tonsite.tld/404.php affiche bien la page ?

Ah oui, j'avais lu ta réponse trop vite pour le rewrite.

Et oui, la 404.php s'affiche bien si je l'appelle

Tu as la même version apache dans les 2 cas ?
Quel est la distribution ? La même dans les 2 cas aussi ?

Non, les versions apache sont différentes.

Celui avec PHP 5.5 : Server version: Apache/2.4.16 (Unix) (centos 6.8)
Celui avec PHP 7.1 : Server version: Apache/2.4.25 (Unix) (centos 7.3)

petit up, si quelqu'un a une idée ?

Bonjour,

je ne peux vous aider, mais depuis deux jours j'ai rencontré que des pb sur WP, je suis novice et je ne m'y connais pas trop en informatique..

Suite à un accès impossible à mon tableau de bord, j'ai appelé le service technique d'OVH qui à finit par me confirmer que la restauration de ma base de données à été effectué avec succès. Mais depuis, quand je clique sur une page ou un article, je tombe sur une erreur 404 " The requested URL /about-me/ was not found on this server." je n'arrive pas à faire des redirections, je ne comprends pas d'où ça vient et comment je peux récupérer mes pages et articles comme avant ?

Si quelqu'un peut m'aider, je vous remercie !

Léa.

@LeaN : alors ouvrez simplement un sujet en exposant votre problème.
Votre problème n'a rien à voir avec le mien, je ne suis pas du tout sous wordpress.
Dans ce nouveau sujet que vous allez créer, indiquer votre nom de domaine, qu'on puisse vous aider.

D'accord, merci

Une erreur 404 « File Not Found » a été rencontrée.


Une erreur 404 « File Not Found » a été rencontrée.

Boule de cristal cassée.

Bonjour à tous,

Le problème que vous rencontrez est lié à l'interaction entre les directives de réécriture et la directive `ErrorDocument` sur PHP 7.1. La raison pour laquelle cela ne fonctionne pas comme prévu est que la directive `RewriteRule` modifie l'URL avant que le serveur ne gère le document d'erreur. PHP 7.1 est plus strict dans la gestion des URLs et ne trouve pas le fichier spécifié dans `ErrorDocument`.

Pour résoudre ce problème tout en conservant les réécritures, vous pouvez essayer l'approche suivante :

1. **Modifier la directive `RewriteRule`** pour inclure une condition qui vérifie si le fichier demandé existe :

```apache
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(www.hamsterguides.com">0-9a-zA-Z-_]+).html$ /$1.php [QSA]
```

2. **Redéfinir l'`ErrorDocument`** pour qu'il pointe vers un script PHP dédié à la gestion des erreurs, ce qui permet de maintenir les réécritures actives :

```apache
ErrorDocument 404 /error_handler.php
```

Dans ce fichier `error_handler.php`, vous pouvez inclure une redirection vers la page d'accueil ou afficher un message d'erreur personnalisé.

3. **Utiliser des chemins absolus** dans `ErrorDocument` pour éviter les conflits avec les réécritures.

En appliquant ces changements, vous devriez être en mesure de faire fonctionner la directive `ErrorDocument` tout en gardant vos réécritures actives sous PHP 7.1.

Si vous avez encore des questions ou si vous souhaitez obtenir plus de détails sur ce sujet, vous pouvez toujours consulter des ressources supplémentaires en ligne ou demander des conseils supplémentaires sur des forums spécialisés comme [Rat.

Bonne chance avec votre configuration !