IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

RedirectPermanent dans un .htaccess


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut RedirectPermanent dans un .htaccess et référencement
    Bonjour,

    J'utilise le RewriteRule pour toutes les pages de mon site.
    J'ai modifié le .htaccess pour ajouter ".html" à toutes mes pages avec RewriteRule . Cependant, les sites qui font des liens vers mes pages ont des liens qui pointent vers les anciennes (sans le ".html") ; j'ai donc décidé d'ajouter dans le .htaccess un RedirectPermanent sur ces pages.

    Explication :
    Mes fichiers php sont de la forme suivante : repertoire_fichier.php, qui se traduit :
    http://monSite.fr/repertoire/fichier.html
    J'ai aussi un fichier repertoire.php qui se traduit par :
    http://monSite.fr/repertoire.html

    J'ai écrit des RedirectPermanent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RedirectPermanent  /repertoire http://monSite.fr/repertoire.html
    RedirectPermanent  /repertoire/fichier http://monSite.fr/repertoire/fichier.html
    Lorsque je vais sur la page http://monSite.fr/repertoire/fichier pour tester le bon fonctionnement de la redirection, j'obtient :
    http://monSite.fr/repertoire.html/fichier
    au lieu de :http://monSite.fr/repertoire/fichier.html
    Ca me prend la première règle sur le "repertoire"et lui applique le ".html". Si j'inverse les deux lignes, cette fois j'ai bien le ".html" au "fichier", mais encore celui au "repertoire".

    Avez-vous une solution pour résoudre ce problème ?

    Merci d'avance,

    GabeLogan

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    Finalement, j'ai trouvé la solution :

    Dans le .htaccess, il faut :
    RedirectPermanent /^(repertoire) http://monsite.fr/repertoire.html
    RedirectPermanent /repertoire/fichier http://monsite.fr/repertoire/fichier.html


    Il suffit juste d'ajouter ^() pour que ça fonctionne.

    J'espère que ça profitera à quelqu'un d'autre.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    Finalement, ce n'est pas si optimal que ça

    L'adresse http://monSite/repertoire ne me redirige pas vers la page html et me dit que que la page est introuvable ...


    Quelqu'un aurait-il une piste ?

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Pourquoi tu ne continue pas à utiliser des RewriteRule ? Les directives Redirect... rajoutent automatiquement à la fin le nom des fichiers. Si ce n'est pas ce que tu veux, je pense que RewriteRule est plus adapté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ $1.html [R=301,L,QSA]
    Faut tester car je ne l'ai pas fait. L'idée c'est que si une URL n'est ni un répertoire, ni un fichier, on redirige en ajoutant .html.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    Bonjour,

    Et bien ta technique fonctionne si l'url ne contient pas ".html". Tous mes liens étant avec cette "extension", dès que je clique sur un de ceux-ci ça me fait une redirection infinie

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Et bien dans ce cas, faut rajouter un test pour ne réécrire que les pages pas en .html. Je savais que j'avais oublié quelque chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !\.html$
    RewriteRule ^(.*)$ $1.html [R=301,L,QSA]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP-JS] Définir une variable dans le htaccess
    Par Ikaly dans le forum Langage
    Réponses: 2
    Dernier message: 09/03/2007, 18h09
  2. Substitution dans un .htaccess
    Par wahou85 dans le forum Apache
    Réponses: 2
    Dernier message: 13/01/2007, 01h25
  3. Chemin dans fichier htaccess
    Par Methode dans le forum Apache
    Réponses: 1
    Dernier message: 05/01/2007, 22h37
  4. Arborescence non valide dans le .htaccess
    Par dacid dans le forum Apache
    Réponses: 3
    Dernier message: 28/07/2006, 13h45
  5. ? dans un htaccess
    Par Shin_RockmanX dans le forum Apache
    Réponses: 1
    Dernier message: 11/05/2006, 12h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo