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 :

1&1 : problème de redirection .htaccess pour éviter duplication de URL


Sujet :

Apache

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut 1&1 : problème de redirection .htaccess pour éviter duplication de URL
    Bonjour,

    Je viens de découvrir votre magnifique forum. Que d'information disponible ici, Bravo!

    Je suis hébergé chez 1&1 aux USA et j'ai un petit forum. Afin d'éviter toute duplication de mes pages pour les moteurs de recherche, etc. je désire rediriger tous les URL qui sont NON-www vers des URL avec www.

    Après avoir trouvé plein d'information sur Internet décrivant un problème similaire, je n'ai pas encore réussi à faire fonctionner mon script, donc, je me décide enfin à demander de l'aide puisque je n'ai pas encore trouvé de solution (sait-on jamais).

    J'ai essayé plein de variantes différentes et j'ai même demandé au support (sic) de 1&1 de m'aider.

    Voici les différents .htaccess que j'ai essayé sans succès:

    À noter que la ligne suivante que vous retrouvez dans tous les fichiers qui suivent est simplement pour redirigerla page index.html vers la page principale du forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Redirect 301 /index.html http://www.mondomaine.ca/forum/index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    AddType x-mapp-php5 .php
    Redirect 301 /index.html http://www.mondomaine.ca/forum/index.php
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^mondomaine\.ca$ [NC]
    RewriteRule ^(.*)$ http://www.mondomaine.ca/forum/$1 [L,R=301]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    AddType x-mapp-php5 .php
    Redirect 301 /index.html http://www.mondomaine.ca/forum/index.php
    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} .
    RewriteCond %{HTTP_HOST} !^www\.mondomaine\.ca
    RewriteRule (.*) http://www.mondomaine.ca/$1 [R=301,L]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    AddType x-mapp-php5 .php
    Redirect 301 /index.html http://www.mondomaine.ca/forum/index.php
    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^mondomaine\.ca [NC]
    RewriteRule (.*) http://www.mondomaine.ca/$1 [R=301,L]
    Ce que 1&1 m'ont dit de faire mais qui ne fonctionne toujours pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    AddType x-mapp-php5 .php
    Redirect 301 /index.html http://www.mondomaine.ca/forum/index.php
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^mondomaine\.ca$ [NC]
    RewriteRule ^(.*)$ http://www.mondomaine.ca/forum/$1 [L,R=301]
    </IfModule>
    Dans tous les cas, si je tape ceci:
    http://mondomaine.ca je suis bien redirigé vers la page
    http://www.mondomaine.ca/forum/index.php (probablement en raison de ma première ligne Redirect 301)

    mais aussitôt que j'essaie quelque chose du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://mondomaine.ca/forum/showthread.php?t=258741
    je ne suis pas redirigé vers ce que j'aimerais obtenir soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://www.mondomaine.ca/forum/showthread.php?t=258741
    Alors, je suis vraiment sans solution et complètement perdu. En plus, je ne connais rien à la programmation. J'ai besoin d'aide!

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Oui, mais vous tombez sur quoi actuellement ? Vous videz votre cache entre chaque essai ? Il n'y a pas d'autres règles/redirections, même ailleurs ?

    En théorie, il ne devrait pas y avoir de nouveau la partie forum dans le chemin de redirection.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} =mondomaine.ca [NC]
    RewriteRule ^.*$ http://www.mondomaine.ca/$0 [L,R=permanent]
    Mais ce serait plus simple à gérer au niveau du VH ...

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par julp Voir le message
    Oui, mais vous tombez sur quoi actuellement ?
    J'ai édité la dernière partie de mon premier message, on dirait que le forum ici n'avait pas bien pris mes URL.

    Donc:
    Aussitôt que j'essaie quelque chose du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://mondomaine.ca/forum/showthread.php?t=258741
    Je ne suis pas redirigé vers ce que j'aimerais obtenir soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://www.mondomaine.ca/forum/showthread.php?t=258741
    donc, le lien demeure comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://mondomaine.ca/forum/showthread.php?t=258741
    avec comme résultat un membre non-connecté et des URL dupliqués.

    Citation Envoyé par julp Voir le message
    Vous videz votre cache entre chaque essai ?
    Oui, je vide complètement le cache après chaque essai.

    Citation Envoyé par julp Voir le message
    Il n'y a pas d'autres règles/redirections, même ailleurs ?
    Non.

    Citation Envoyé par julp Voir le message
    En théorie, il ne devrait pas y avoir de nouveau la partie forum dans le chemin de redirection.
    J'ai aussi essayé sans la partie forum.

    Citation Envoyé par julp Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} =mondomaine.ca [NC]
    RewriteRule ^.*$ http://www.mondomaine.ca/$0 [L,R=permanent]
    Qu'est-ce que c'est le signe "=" sur votre 3eme ligne?

    Citation Envoyé par julp Voir le message
    Mais ce serait plus simple à gérer au niveau du VH ...
    Que voulez-vous dire? Qu'est-ce que le VH?

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Pouvez-vous remettre Options +FollowSymLinks ? Est-ce qu'une règle de réécriture toute simple fonctionne ?

    Le = c'est pour que le paramètre soit considéré comme une chaîne littérale et non un motif.

    Oui, avec un VirtualHost à part, dédié à monforum.ca, il aurait juste suffit d'une règle Redirect. C'est une façon de faire, suivant les besoins et possibilités.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par julp Voir le message
    Pouvez-vous remettre Options +FollowSymLinks ? Le = c'est pour que le paramètre soit considéré comme une chaîne littérale et non un motif.
    Je viens d'essayer ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    AddType x-mapp-php5 .php
    Redirect 301 /index.html http://www.mondomaine.ca/forum/index.php
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} =mondomaine [NC]
    RewriteRule ^.*$ http://www.mondomaine/$0 [L,R=permanent]
    J'obtiens encore le même résultat.


    Citation Envoyé par julp Voir le message
    Est-ce qu'une règle de réécriture toute simple fonctionne ?
    Oui, si j'entre ceci dans mon .htaccess:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RewriteEngine on
    RewriteRule testpage\.html http://www.google.com [R]
    et que je l'envoie sur le serveur (toujours dans le server root)

    Dans mon navigateur, je tape l'adresse suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://www.mondomaine.ca/testpage.html
    J'arrive sur la page de Google, preuve que le mod_rewrite fonctionne.


    Citation Envoyé par julp Voir le message
    Oui, avec un VirtualHost à part, dédié à mondomaine.ca, il aurait juste suffit d'une règle Redirect. C'est une façon de faire, suivant les besoins et possibilités.
    Par virtual host, vous voulez dire, le type de serveur? Je suis sur un serveur share mais 1&1 m'ont dit que le mod_rewrite fonctionnait et avec le test que je vous ai montré, effectivement ça fonctionne. Alors pourquoi est-ce que l'autre partie ne fonctionne pas elle? Je suis toujours dans le brouillard.

    Je veux simplement éviter d'avoir les URL NON-www dédoublés et les rediriger vers mes URL avec www. Je ne croyais pas que cela serait si difficile d'arriver à obtenir cela.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Le test de réécriture c'est aussi depuis mondomaine.ca qu'il faudrait l'effectuer de façon à vérifier qu'il ne fasse pas régime à part.

    Etes-vous certain de votre entête HTTP_HOST et de sa correspondance ? (à vérifier avec un script php éventuellement, même un simple phpinfo)

    Il n'est pas non plus question du protocole HTTPS (sans support de l'extension SNI) ?

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    [quote=julp;5113770]Le test de réécriture c'est aussi depuis mondomaine.ca qu'il faudrait l'effectuer de façon à vérifier qu'il ne fasse pas régime à part.
    Vous me perdez ici. Pourriez-vous m'aider à composer ce script afin que je puisse le tester depuis mondomaine.ca SVP? Je n'y connais rien en codage...

    [QUOTE=julp;5113770]
    Etes-vous certain de votre entête HTTP_HOST et de sa correspondance ? (à vérifier avec un script php éventuellement, même un simple phpinfo)
    Je ne comprend pas plus ici. Correspodnace? Script php? Est-ce possible d'avoir un exemple avec mondomaine.ca ici aussi?

    Citation Envoyé par julp Voir le message
    Il n'est pas non plus question du protocole HTTPS (sans support de l'extension SNI) ?
    Non, je n'ai rien de tel sur mon serveur.

    Merci beaucoup pour vos réponses.

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    mondomaine.ca et www.mondomaine.ca ont bien le même DocumentRoot à la base (ils pointent bien sur le même répertoire) ? Il n'y a pas déjà quelque chose en place quelque part ailleurs pour l'"émuler" ?

    Citation Envoyé par Newbeee Voir le message
    si j'entre ceci dans mon .htaccess:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RewriteEngine on
    RewriteRule testpage\.html http://www.google.com [R]
    et que je l'envoie sur le serveur (toujours dans le server root)

    Dans mon navigateur, je tape l'adresse suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://www.mondomaine.ca/testpage.html
    J'arrive sur la page de Google, preuve que le mod_rewrite fonctionne.
    Même chose en demandant http://mondomaine.ca/testpage.html cette fois.

    Pour l'entête HTTP_HOST : vous créez un script PHP http_host.php tel que :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    var_dump($_SERVER['HTTP_HOST']);
    Par http://mondomaine.ca/http_host.php doit afficher ce que vous appelez mondomaine.ca
    Par http://www.mondomaine.ca/http_host.php doit afficher "www.mondomaine.ca"

    Mais, bon, à travailler avec des données fictives on a peu de chances d'avoir du concret surtout s'il y a erreur sur l'adaptation même des règles.

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par julp Voir le message
    mondomaine.ca et www.mondomaine.ca ont bien le même DocumentRoot à la base (ils pointent bien sur le même répertoire) ? Il n'y a pas déjà quelque chose en place quelque part ailleurs pour l'"émuler" ?
    Non, rien d'autre.

    Citation Envoyé par julp Voir le message
    Même chose en demandant http://mondomaine.ca/testpage.html cette fois.
    En tapant: http://mondomaine.ca/testpage.html cela m'amène aussi sur la page de Google, donc le mod_rewrite fonctionne vraiment correctement!

    Citation Envoyé par julp Voir le message
    Pour l'entête HTTP_HOST : vous créez un script PHP http_host.php tel que :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    var_dump($_SERVER['HTTP_HOST']);
    Par [html]http://mondomaine.ca/http_host.php[/html] doit afficher ce que vous appelez mondomaine.ca
    Par [html]http://www.mondomaine.ca/http_host.php[/html] doit afficher "www.mondomaine.ca"
    Voici ce que je viens d'essayer comem vous avez indiqué. Par contre, je ne savais pas si vous vouliez que je conserve mon fichier .htaccess avec les valeurs du mod_rewrite qui ne fonctionne pas alors je l'ai modifié en ne conservant que ceci dans le fichier .htaccess:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AddType x-mapp-php5 .php
    Ensuite, j'ai créé le fichier "http_host.php" contenant ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <?php
    var_dump($_SERVER['HTTP_HOST']);
    que j'ai ensuite envoyé dans mon server root.

    Finalement, en appelant [html]http://mondomaine.ca/http_host.php[/html] j'obtiens ceci comme résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string(17) "mondomaine.ca"
    En appelant [html]http://www.mondomaine.ca/http_host.php[/html] j'obtiens ceci comme résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string(21) "www.mondomaine.ca"
    J'obtiens donc bien les valeurs que vous aviez indiquées. C'était un test que vous vouliez me faire exécuter? Je dois faire quoi suite à ces résultats?

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Alors soit vous ajoutez une erreur au niveau de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteCond %{HTTP_HOST} =mondomaine.ca [NC]
    Lorsque vous la recopiez/adaptez (peu importe sa syntaxe), ce qui fait qu'il n'y a pas correspondance donc que la redirection n'est jamais déclenchée.

    Soit il y a des subtilités au niveau de la configuration d'Apache que seul votre prestataire ne peut connaître.

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par julp Voir le message
    Alors soit vous ajoutez une erreur au niveau de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteCond %{HTTP_HOST} =mondomaine.ca [NC]
    Lorsque vous la recopiez/adaptez (peu importe sa syntaxe), ce qui fait qu'il n'y a pas correspondance donc que la redirection n'est jamais déclenchée.
    Pourtant, j'ai essayé avec plein de configurations différentes, en m'assurant toujours de la bonne syntaxe.

    Citation Envoyé par julp Voir le message
    Soit il y a des subtilités au niveau de la configuration d'Apache que seul votre prestataire ne peut connaître.
    Mon prestataire est 1&1 comme indiqué dans le titre du thread. Je croyais que plusieurs personnes auraient le même problème que moi ici car 1&1 doit tout de même être utilisé par plusieurs membres asssurément.

Discussions similaires

  1. Redirection HTACCESS pour site bilingue
    Par korbn dans le forum Apache
    Réponses: 8
    Dernier message: 01/12/2011, 22h09
  2. problème de redirection htaccess
    Par kaayna dans le forum Apache
    Réponses: 1
    Dernier message: 11/01/2011, 21h00
  3. Réponses: 3
    Dernier message: 22/04/2009, 05h59
  4. problème de redirection (.htaccess)
    Par mdr_cedrick dans le forum Apache
    Réponses: 2
    Dernier message: 02/06/2008, 14h11
  5. Réponses: 2
    Dernier message: 15/05/2008, 19h45

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