[Résolu] Redirection htaccess + Plugin MyBetterURL

RcKRcK Member
août 2017 modifié dans Entraide
Bonjour,

Souhaitant mettre en place un nouveau site sous pluxml, je rencontre un problème lors de redirection sur mon htaccess. Je m'explique. Voici le htaccess.
[== Indéfini ==]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^monsite.com$
RewriteRule ^(.*) http://www.monsite.com/$1  [QSA,L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*index(\.[a-z0-9]+)?[^\ ]*\ HTTP/
RewriteRule ^(([^/]+/)*)index(\.[a-z0-9]+)?$ http://www.monsite.com/$1? [R=301,L] 
RedirectPermanent /accueil /
RedirectPermanent /decouvrir /
RedirectPermanent /decouvrir/les-plages/ /
# BEGIN -- Pluxml
Options -Multiviews
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
# Réécriture des urls
RewriteRule ^(?!feed)(.*)$ index.php?$1 [L]
RewriteRule ^feed\/(.*)$ feed.php?$1 [L]
</IfModule>
# END -- Pluxml

Je veux que mes redirect permanent pointes sur l'accueil. Ce sont d'ancien restes de l'ancien site que j'aimerai rediriger.

Malheureusement après avoir essayer plusieurs syntaxe , j'en reviens toujours au même point, rien ne fonctionne. Bien-sur la redirection est activée dans le backoffice de pluxml et mybetterurl configuré.

Merci d'avance pour votre aide.

Cordialement.

Réponses

  • kowalskykowalsky Member
    août 2017 modifié
    Salut RcK,

    il te faut indiquer l'URL complète de ton site pour une redirection (que l'on placera souvent avant les rewrite) :
    Redirect Permanent /accueil "http://www.monsite.com/"
    Redirect Permanent /decouvrir "http://www.monsite.com/"
    Redirect Permanent /decouvrir/les-plages "http://www.monsite.com/"
    
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^monsite.com$
    RewriteRule ^(.*)$ http://www.monsite.com/$1  [QSA,L,R=301]
    RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*index(\.[a-z0-9]+)?[^\ ]*\ HTTP/
    RewriteRule ^(([^/]+/)*)index(\.[a-z0-9]+)?$ http://www.monsite.com/$1? [R=301,L] 
    
  • RcKRcK Member
    Merci pour ta réponse rapide, voici mon htaccess après ton message. Mais cela reviens au même, l'url généré est celle ci : http://www.monsite.com/?accueil si je souhaite accéder avec l'url http://www.monsite.com/accueil
    [== Indéfini ==]
    Redirect Permanent /accueil "http://www.monsite.com/"
    Redirect Permanent /decouvrir "http://www.monsite.com/"
    Redirect Permanent /decouvrir/les-plages/ "http://www.monsite.com/"
    
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^monsite.com$
    RewriteRule ^(.*) http://www.monsite.com/$1  [QSA,L,R=301]
    RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*index(\.[a-z0-9]+)?[^\ ]*\ HTTP/
    RewriteRule ^(([^/]+/)*)index(\.[a-z0-9]+)?$ http://www.monsite.com/$1? [R=301,L] 
    
    # BEGIN -- Pluxml
    Options -Multiviews
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    # Réécriture des urls
    RewriteRule ^(?!feed)(.*)$ index.php?$1 [L]
    RewriteRule ^feed\/(.*)$ feed.php?$1 [L]
    </IfModule>
    # END -- Pluxml
    
  • zetraderzetrader Member
    août 2017 modifié
    Hello, il doit y avoir un problème de configuration car je viens de faire le test sur mon site, si je tape mondomaine/?accueil, je suis redirigé vers mondomaine/accueil (qui dans mon cas fait une erreur, car je n'ai pas de page nommée ainsi, mais cela montre que /?xxx est redirigé vers /xxx).
    J'utilise aussi mybetterurl.
  • RcKRcK Member
    août 2017 modifié
    Niveau configuration :

    - La réécriture d'URL est activée dans configuration avancée.
    - Sur MyBetterURL, j'ai laissé le champ vide afin de n'avoir aucune extension de fichiers affichés dans l'URL.

    S'il y a autre(s) chose(s) à configurer je suis preneur :)
  • kowalskykowalsky Member
    août 2017 modifié
    Supprime les deux lignes suivantes de ton fichier :
    RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*index(\.[a-z0-9]+)?[^\ ]*\ HTTP/
    RewriteRule ^(([^/]+/)*)index(\.[a-z0-9]+)?$ http://www.monsite.com/$1? [R=301,L] 
    

    (je me demande si le ? ne vient pas de la dernière ligne, et je ne suis pas sûr d'en comprendre l'usage)


    Pour info, voici la redirection que j'utilise sur mon site pour forcer vers http://www.monsite.com :
    RewriteCond %{HTTP_HOST} ^monsite\.com$
    RewriteRule ^(.*)$ "http\:\/\/www\.monsite\.com\/$1" [R=301,L]
    

    (et pense à nettoyer le cache de ton navigateur, si ce n'est déjà fait)
  • RcKRcK Member
    Aucun changement si ce n'est que j'ai mondomaine//?accueil. Un slash ce rajoute..
  • kowalskykowalsky Member
    août 2017 modifié
    Hum étrange

    Bon. On va reprendre depuis le début :)

    Quelle version de PluXml utilises-tu ?
    Quelle version du plugin MyBetterUrl utilises-tu ?

    Dans Administration / Paramètres / Configuration avancée -> désactive la réécriture d'URL et sauvegarde (bouton modifier). Puis active la de nouveau et sauvegarde.

    Dans Paramètres / Plugins -> modifie l'ordre de chargement de MyBetterUrl et passe le à 1 si ce n'est pas déjà le cas.

    Teste ton lien "http://www.monsite.com/accueil".

    Si cela ne marche toujours pas, sauvegarde ton fichier .htaccess et remplace le contenu actuel par :
    Redirect permanent /accueil "http://www.monsite.com/"
    
    # BEGIN -- Pluxml
    Options -Multiviews
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    # Réécriture des urls
    RewriteRule ^(?!feed)(.*)$ index.php?$1 [L]
    RewriteRule ^feed\/(.*)$ feed.php?$1 [L]
    </IfModule>
    <Files "version">
    	Order allow,deny
    	Deny from all
    </Files>
    # END -- Pluxml
    

    Et teste à nouveau ton lien "http://www.monsite.com/accueil".

    Si cela ne marche toujours pas, désactive le plugin MyBetterUrl et teste à nouveau le lien ;)

    Je n'ai pas mieux pour le moment si cela ne marche toujours pas :)
  • RcKRcK Member
    août 2017 modifié
    Alors

    Version PLUXML : 5.6
    Version MyBetterURL: 1.2

    Après avoir tout fait et bien entendu à chaque fois vidé le cache ou encore essayé en nav privée, rien ne change..

    De plus ce problème je l'es sur trois sites différents..
  • Ta version du plugin n'est pas la dernière en date (version 1.5.5 (10/04/2017) - http://pluxopolis.net/myplugins), une mise à jour ne fera pas de mal mais bon, si le problème de redirection reste présent en désactivant le plugin, il va te falloir attendre qu'un plus calé passe dans le coin parce que je ne pense pas que ce soit lié à PluXml.

    En utilisant le .htaccess que je t'ai donné en com 8, la redirection devrait te renvoyer à la racine de ton site quel que soit le CMS utilisé.

    En attendant et pour compléter le diagnostic et te donner quelques pistes supplémentaires : c'est bien un serveur Apache que tu utilises (si oui, quelle version) ? Pas du Nginx ? Si c'est toi qui le gère, la redirection serveur est bien activée ? Si tu passes par un hébergeur, il n'y aurait pas une configuration mise en place via le panneau de gestion ? Des fois que.

    Tes 3 sites sont sur le même hébergement ? Dans des répertoires différents depuis la racine ? Sur un serveur en production partagé, un serveur dédié ou sur une machine virtuelle locale ?
  • RcKRcK Member
    J'ai procédé à plus de tests encore de mon côté aujourd'hui. Un test sur un serveur local (Xampp) génère le même genre de problème. J'ai donc mis à jour MyBetterURL et essayer d'autres syntaxes et j'ai une première piste.

    Voici le code :
    [== Indéfini ==]
    RedirectPermanent /test2 /
    RedirectPermanent /test /
    RedirectPermanent /accueil /
    RedirectPermanent /decouvrir /
    
    
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^monsite.com$
    RewriteRule ^(.*) http://www.monsite.com/$1 [QSA,L,R=301]
    # RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*index(\.[a-z0-9]+)?[^\ ]*\ HTTP/
    # RewriteRule ^(([^/]+/)*)index(\.[a-z0-9]+)?$ http://www.monsite.com/$1? [R=301,L]
    RewriteCond %{HTTP_HOST} ^monsite\.com$
    RewriteRule ^(.*)$ "http\:\/\/www\.monsite\.com\/$1" [R=301,L]
    # BEGIN -- Pluxml
    Options -Multiviews
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    # Réécriture des urls
    RewriteRule ^(?!feed)(.*)$ index.php?$1 [L]
    RewriteRule ^feed\/(.*)$ feed.php?$1 [L]
    # END -- Pluxml
    


    Avec ce code, j'ai qu'une redirection qui fonctionne, RedirectPermanent /test /. Même la redirection, au-dessus, ne fonctionne pas. C'est à s'en tirer les cheveux...

    Je ne sais pas si cela peut approfondir pour trouver la solution.
  • RcKRcK Member
    Je reviens vers vous pour vous dire que le soucis est résolu avec l'aide d'un membre de stack overflow :
    [== Indéfini ==]
    RewriteEngine On
    RewriteBase /
    Options +FollowSymLinks 
    
    RewriteRule ^accueil$ / [R=301,L]
    RewriteRule ^decouvrir/$ / [R=301,L]
    RewriteRule ^decouvrir/les-plages/$ / [R=301,L]
    
    RewriteCond %{HTTP_HOST} ^monsite\.com$
    RewriteRule ^(.*)$ "http\:\/\/www\.monsite\.com\/$1" [R=301,L]
    # BEGIN -- Pluxml
    Options -Multiviews
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    
    # Réécriture des urls
    RewriteRule ^(?!feed)(.*)$ index.php?$1 [L]
    RewriteRule ^feed\/(.*)$ feed.php?$1 [L]
    
Connectez-vous ou Inscrivez-vous pour répondre.