Jump to content

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


Recommended Posts

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)?

Link to post
Share on other 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

Link to post
Share on other 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...

Link to post
Share on other 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....

Link to post
Share on other 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]

Link to post
Share on other 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

Link to post
Share on other 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

Link to post
Share on other 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...

Link to post
Share on other 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 ?

Link to post
Share on other 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....

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Similar Content

    • By cyberdede
      Bonjour à tous

      je voudrais quand je tape https;//monsite/dossier accéder à https;//monsite/dossier/index.php
      or j'accède à https;//monsite/dossier/ avec un 404

      en localhost ca fonctionne

      pour la racine https;//monsite c'est ok

      mon htaccess
       
      RewriteEngine On Options -Indexes RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] RewriteCond %{HTTPS} ^off$ [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] AddDefaultCharset UTF-8 ErrorDocument 404 /404.php  
    • By kevinjoseph
      Bonjour, j’ai un gros problème sur mon site Wordpress . Du jour au lendemain, mon site wordpress fais une redirection vers un autre site wordpress que j’ai crée ,sans que je touche à quoi que ce soit. Quand j’essai d’aller sur l’admin pour désactiver les plugins et voir d’où peut venir le problème. Impossible d’accéder, sa me redirige vers l’admin de l’autre site. Au final il est impossible que j’accède au site via (google, la bare de recherche, les favoris, l’admin…) pour voir ce qu’il fonction pas, j’ai juste accès au FTP. J'ai essayé de voir d'où pouvez venir ce bug en supprimant les plugins, le théme, mes derniers modifications, regarder sur le .htaccess si il y avais quelque par le nom de domaine de l'autre site écrit. Ca n'a rien changer, le site continue de ce rediriger automatiquement vers l'autre site. Si vous avez une idée d’où sa peut venir ou comment faire pour arranger ça et surtout comment éviter que sa ce reproduise. Sa m’aiderai beaucoup, merci d’avance.
      voici le code du .htaccess:
       
      # BEGIN WordPress
      <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteRule ^index\.php$ - [L]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . /index.php [L]
      </IfModule>

      # END WordPress
      ~   Ludovic • 16:28    
    • By leobk
      Bonjour,
       
      J'ai un sous-domaine www.fr.monsite.com dédié pour la réservation des vols
      j'ai redirigé récemment ce sous-domaine vers le site principal www.monsite.com et le nombre des erreurs 404 a explosé
      un nombre énorme d'URLs de type :
      www.fr.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0
      redirigent vers :
      www.monsite.com/fr/vols/index?f_type=01&f_departure=TLS&f_destination=DJE&f_date_from=08/09/2013&f_date_to=22/09/2013&f_flexibility=3&f_paxs_adults=2&f_paxs_childs=0&f_paxs_infants=0
       
      L'URL de destination est biensur introuvable 404, puisque les variables utilisés dans les deux sites ne sont pas identiques
      Voici la structure d'URL si on fait une recherche de vol sur le site principal :
      https://www.monsite.com/fr/resa?depart=SXF&arrivee=NBE&aller=2017-11-10&retour=2017-11-30&adultes=1&enfants=1&bebes=0&departureDateTime_D=&arrivalDateTime_D=&departureDateTime_R=&arrivalDateTime_R=&fareGroupName=&fareGroupName_R=&sens=2&currency=EUR&airline=&flightNumber=&flight=&flight_retour=&webview=0&felxibilite=2
       
       
      existe-il un moyen pour rediriger l'ensemble des URLs dynamiques du sous-domaines vers une URL statique du domaine principale (autre que l'accueil)?
       
       
    • By PieceMobile
      Bonjour,



      J'espère que vous allez tous bien.



      Auriez vous une solution pour rediriger ( via une règle htaccess par exemple ) :



      http://www.mon-site.com/blabla.html?ps_mobile_site=1



      vers : http://www.mon-site.com/blabla.html



      A mon avis, s'agissant d'un paramètre d'URL, de ce que j'ai cru comprendre -a mon petit niveau- c’était pas possible, mais ça me dépannerai pas mal si l'un d'entre vous avait une idée.



      Merci d'avance





×
×
  • Create New...