Aller au contenu

Problème htaccess (avec/sans extension .php)


Régis

Sujets conseillés

Bonjour,

Récemment (je n'avais pas remarqué auparavant) j'ai découvert dans GG des pages en duplicate content sur mon site...

Après vérification, il s'avère que des pages sont indexées sans l'extension (.php); par exemple :

  • -www.example.com/rubrique/feuille.php
  • est indexé aussi sous
  • -www.example.com/rubrique/feuille

Après vérification sur le site, effectivement la page "rubrique/feuille.php" est accessible aussi sous "rubrique/feuille" (sans extension et sans provoquer d'erreur 404 !!!!).

Etant nul en code et donc avec htaccess... :

comment puis-je faire en sorte que seules les pages avec l'extension .php soient indexées (ou que sans extension les pages soient redirigées vers .php)?

Lien vers le commentaire
Partager sur d’autres sites

Salut Régis,

C'est vraisemblablement parce que Apache est configuré avec l'option MultiViews.

Tu peux essayer, si le AllowOverride est correctement configuré et te le permet, de mettre ceci dans un fichier .htaccess à la racine du site

Options -MultiViews

Lien vers le commentaire
Partager sur d’autres sites

Hello captain_torche

Voici l'htaccess actuel :


RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^(.*) http://www.example.com/$1 [QSA,L,R=301]
ErrorDocument 404 /404.php

Hello Dan,

Merci

En lisant le doc, j'avais vu l'option MultiViews mais je n'ai pas osé l'utiliser...

Je viens donc d'insérer "Options -MultiViews" => effectivement -www.example.com/rubrique/feuille n'affiche plus le contenu de "feuille.php" mais le contenu "erreur 404" sans pour autant rediriger vers le page 404.php

Hum, j'espère que je suis clair...

Sinon je peux vous envoyer par MP... un exemple d'url...

Lien vers le commentaire
Partager sur d’autres sites

Sans l'avoir vérifié, je pense que ceci devrait fonctionner (pour autant que tous tes fichiers portent l'extension .php) :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule /?(.*) http://www.tondomaine.tld/$1.php [R=301,NC,L]

A mettre APRES la ligne Options et la réécriture du domaine vers le www....

Lien vers le commentaire
Partager sur d’autres sites

Ceci serait peut-être plus efficace !

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule /?(.*) http://www.tondomaine.tld/$1.php [R=301,NC,L]

Lien vers le commentaire
Partager sur d’autres sites

YESSSSSSSSSSSSS !

Cool DAn

Rapide et efficace! Merci thumbup.gif

Ok l'URL -www.example.com/rubrique/feuille redirige bien vers -www.example.com/rubrique/feuille.php

Mais il reste encore un détail....

Si je fais une erreur, p.e : -www.example.com/rubrique/NIMPORTEQUOI.php

=> j'ai pas de redirection 404 mais

-www.example.com/rubrique/NIMPORTEQUOI.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php.php

avec un message "La page n'est pas redirigée correctement"

L'htaccess actuel est


RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^(.*) http://www.example.com/$1 [QSA,L,R=301]
Options -MultiViews
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule /?(.*) http://www.example.com/$1.php [R=301,NC,L]
ErrorDocument 404 /404.php

Lien vers le commentaire
Partager sur d’autres sites

Lis ma réponse au dessus de la tienne !

Cela devrait solutionner ce dernier problème !

En fait, je change la règle conditionnelle :

- si l'URL demandée n'est pas un fichier

- et si l'URL demandée à laquelle on ajoute .php EST un fichier

- alors on fait la redirection !

Je pense que la première condition n'est même pas indispensable !

PS: pas si simple de faire ça sans tester wink.gif

Lien vers le commentaire
Partager sur d’autres sites

Ok.... je viens de tester la 2nde solution...

Cette fois-çi, je provoque une erreur du type -www.example.com/rubrique/NIMPORTEQUOI.php :

je n'ai plus -www.example.com/rubrique/NIMPORTEQUOI.php.php.php.php...

mais bien -www.example.com/rubrique/NIMPORTEQUOI.php avec affichage du contenu de la page 404...

Est-il possible de rediriger -www.example.com/rubrique/NIMPORTEQUOI.php vers -www.example.com/404.php ?

L'htaccess actuel est


RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^(.*) http://www.example.com/$1 [QSA,L,R=301]
Options -MultiViews
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule /?(.*) http://www.example.com/$1.php [R=301,NC,L]
ErrorDocument 404 /404.php

"PS: pas si simple de faire ça sans tester" dixit Dan... si tu veux je peux te MP le site...

Lien vers le commentaire
Partager sur d’autres sites

Cette fois-çi, je provoque une erreur du type -www.example.com/rubrique/NIMPORTEQUOI.php :

je n'ai plus -www.example.com/rubrique/NIMPORTEQUOI.php.php.php.php...

mais bien -www.example.com/rubrique/NIMPORTEQUOI.php avec affichage du contenu de la page 404...

Est-il possible de rediriger -www.example.com/rubrique/NIMPORTEQUOI.php vers -www.example.com/404.php ?

C'est ce que ça fait, non ? ... si tu as bien une entête 404 qui est retournée.

Il n'y a que l'URL qui n'affiche pas 404.php si je comprends bien ?

Lien vers le commentaire
Partager sur d’autres sites

L'entête retournée est bien une entête 404. Le titre de page est bien celui de la page 404.php.

Je ne vois que le menu à gauche qui change....

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...