[Résolu] RewriteCond semble provoquer une erreur 500

Nouveau WRInaute
Bonjour,

J'essaye d'appliquer la technique permettant d'éviter le duplicate-content qui redirige le site http://domain.com vers http://www.domain.com.

J'applique les règles que j'ai trouvé sur ce site (j'en ai essayé beaucoup, venant aussi d'autres sites, mais ça ne change rien) :

Code:
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.edispo\.fr [NC]
RewriteRule (.*) http://www.edispo.fr/$1 [QSA,R=301,L]

Ceci me provoque une erreur 500. Quelques petites précisions qui peuvent aider à la compréhension de ce problème :

- Si je commente la ligne RewriteCond, je n'obtiens plus d'erreur.
- D'autres règles de redirection fonctionnent, l'url rewriting est donc bien activé
- Je suis chez 1&1, pack perso initial
- Si j'ajoute la ligne "Options +FollowSymlinks" j'obtiens une erreur 500 également (quelque soit ce qui suit)

Je me permets de poster car j'ai essayé de nombreux codes différents pour cette redirection, et que je n'ai trouvé aucun post de personnes ayant eu le même problème que moi.

Merci d'avance pour votre aide.
 
WRInaute discret
Salut;
Essaye ce code là :

Code:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(domain\.com)(:80)? [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [R=301,L]
order deny,allow

;)
 
Nouveau WRInaute
Merci beaucoup pour votre réponse. Malheureusement, ça ne marche pas non plus. J'obtiens toujours une erreur 500 et lorsque je commente la ligne RewriteCond, ça refonctionne.

C'est vraiment bizarre... Est-ce que ça ne peut pas venir d'un problème de configuration du serveur ? Merci d'avance.
 
Nouveau WRInaute
Finalement merci beaucoup pour votre code, il m'a permis de trouver l'erreur ! En fait c'est simplement le saut de ligne entre la ligne RewriteEngine On et RewriteCond qui faisait planter. Je n'avais pas pensé à ça mais en faisant un copier-coller de tout votre code, j'ai découvert l'erreur. Donc merci beaucoup !

Par contre, est-ce que cette redirection est sensée ajouter automatiquement 'www' à http://domain.com dans la barre d'adresse du navigateur, où est-ce que la redirection ne se "voit pas" ? C'est à dire, est-ce que lorsque je tape http://domain.com j'arrive bien en réalité sur http://www.domain.com ? Comment vérifier cela ?

Merci encore.
 
Nouveau WRInaute
Lorsque je tape http://domain.com dans mon navigateur, l'adresse reste http://domain.com dans la barre d'adresse.

Après ce que je ne comprends pas c'est si c'est normal. Logiquement oui parce que lorsque je redirige par exemple "accueil.html" vers "accueil.php?page=accueil", l'adresse visible reste bien "accueil.html" même si en réalité c'est la page "accueil.php?page=accueil" qui est appelée.

Donc si je tape http://domain.com, j'imagine que je suis bien redirigé vers http://www.domain.com mais que je ne le vois pas, c'est ca ? (Avant d'appliquer les règles, je pouvais déjà accéder à mon site par http://domain.com, et c'est pour ça que je me pose la question, parce que du coup je n'ai aucune différence visible).

Donc voilà, je voulais avoir la confirmation que ma redirection marche bien. Désolé pour toutes ces questions chiantes, mais je n'ai pas complètement saisi le principe et donc je préfère être sûr. Merci encore.
 
Nouveau WRInaute
Merci pour cette indication. Ma redirection ne marche donc pas... J'ai bien mis le R=301, mais aucun "www" n'apparait lorsque je tape http://domain.com.

Je vous poste mon .htaccess entier au cas où une autre erreur pourrait empêcher la redirection de marcher.

Code:
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(edispo\.fr)(:80)? [NC]
RewriteRule ^(.*) http://www.edispo.fr/$1 [R=301,L]
order deny,allow

RewriteRule ^site2/([a-z]+)\.html$ /site2/index.php?page=$1 [L]
RewriteRule ^site2/([a-z]+)-([a-z]+)\.html$ /site2/index.php?page=$1_$2 [L]
RewriteRule ^site2/([a-z]+)-([a-z]+)-([a-z]+)\.html$ /site2/index.php?page=$1_$2_$3 [L]
RewriteRule ^site2/([a-z]+)-([a-z]+)-([a-z]+)-([a-z]+)\.html$ /site2/index.php?page=$1_$2_$3_$4 [L]
RewriteRule ^site2/camping-car-([[:alnum:]]+)\.html$ /site2/index.php?page=fiche&immatriculation=$1 [L]

Merci encore pour votre aide.
 
WRInaute passionné
voila ce que je mettrais :
Code:
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.edispo\.fr$ [NC]
RewriteRule ^(.*)$ http://www.edispo.fr/$1 [R=301,L,QSA]

RewriteRule ^site2/([a-z]+)\.html$ /site2/index.php?page=$1 [L]
RewriteRule ^site2/([a-z]+)-([a-z]+)\.html$ /site2/index.php?page=$1_$2 [L]
RewriteRule ^site2/([a-z]+)-([a-z]+)-([a-z]+)\.html$ /site2/index.php?page=$1_$2_$3 [L]
RewriteRule ^site2/([a-z]+)-([a-z]+)-([a-z]+)-([a-z]+)\.html$ /site2/index.php?page=$1_$2_$3_$4 [L]
RewriteRule ^site2/camping-car-([[:alnum:]]+)\.html$ /site2/index.php?page=fiche&immatriculation=$1 [L]
 
Nouveau WRInaute
Merci. Malheureusement, ça ne marche toujours pas. Est-ce possible qu'une mauvaise configuration dans le serveur y soit pour quelque chose ? Que la redirection permanente soit désactivée quelque part ?
 
Nouveau WRInaute
Merci pour ce dernier post, mon problème venait bien du fait que j'avais transféré mon fichier en binaire !

Je ne savais pas qu'il fallait transférer les htaccess en ASCII... Je viens de chercher un peu et de comprendre pourquoi c'est nécessaire. J'ai retransféré mon fichier en ASCII et j'ai refait tous les sauts de ligne directement sur le serveur pour qu'ils soient bons. Maintenant tout fonctionne correctement !

Merci beaucoup pour votre aide !
 
WRInaute discret
De plus n'ecraser pas vos fichier en les transférant, essaye plutot de suprimer les anciens et retransfér les nouveaux . bn chance
 
Discussions similaires
Haut