2010-06-30 7 views
0

J'ai ce mod-réécrire dans mes htacces qui permet certaines urls propres;combinant force-www avec 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> 

Maintenant, je voudrais aussi forcer www, donc j'é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, cela se traduit par aucun de mes pages être trouvé. FYI Une redirection de langue ajoute des paramètres de code de pays à l'URL de chargement.

Comment puis-je faire jouer ces règles?

Répondre

0

Vous êtes probablement manquer 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 le drapeau 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 aussi ajouté B parce que vous utilisez la référence arrière dans une chaîne de requête, elle doit donc être échappée. Voir le documentation.