0 votes

combiner force-www avec des urls propres

J'ai ce mod-rewrite dans mon htacces qui permet d'avoir des urls propres ;

<IfModule mod_rewrite.c>

RewriteEngine on
RewriteBase /

### LANGUAGE REDIRECT RULES start
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(en|nl)-?()?\/(.*\/?)$ index.php?language=$1&region=$2&symphony-page=$3&%{QUERY_STRING} [L]
### LANGUAGE REDIRECT RULES end

### FRONTEND REWRITE - Will ignore files and folders
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*\/?)$ ./index.php?symphony-page=$1&%{QUERY_STRING}  [L]

</IfModule>

J'aimerais maintenant forcer le www, et j'ai donc étendu le code :

<IfModule mod_rewrite.c>

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

### LANGUAGE REDIRECT RULES start
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(en|nl)-?()?\/(.*\/?)$ index.php?language=$1&region=$2&symphony-page=$3&%{QUERY_STRING} [L]
### LANGUAGE REDIRECT RULES end

### FRONTEND REWRITE - Will ignore files and folders
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*\/?)$ ./index.php?symphony-page=$1&%{QUERY_STRING}  [L]

</IfModule>

Cependant, aucune de mes pages n'est trouvée. Pour information, une redirection linguistique ajoute les paramètres du code pays à l'url lors du chargement.

Comment faire pour que ces règles soient respectées ?

0voto

Artefacto Points 50896

Il vous manque probablement la chaîne de requête :

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

Vous pouvez également utiliser la fonction QSA dans vos autres règles, par exemple :

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*\/?)$ ./index.php?symphony-page=$1  [L,QSA,B]

J'ai également ajouté B parce que vous utilisez la référence arrière dans une chaîne de requête, et qu'elle doit donc être échappée.

Voir le la documentation .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X