2010-07-05 6 views

Répondre

0

Réécriture de base:

RewriteEngine On 
RewriteRule http://www.site.com/?lang=(.+?)&type=(\d+?)&mode=(\d+?) http://www.site.com/$1/$2/$3 [L,R=permanent] 

Edit: Changed drapeaux de réécriture pour forcer une redirection permanente

+0

Cela semble fonctionner: L'URL demandée n'a pas été trouvée sur ce serveur. – werd

+0

Avez-vous une page qui répond à 'site.com/lv/1/2'? Utilisez-vous un cadre quelconque? –

1

En supposant que vous voulez vraiment réécrire /lv/1/2 à ?lang=lv&type=1&mode=2 (je ne vois aucune raison de faire le contraire) et qu'aucune autre réécriture ne soit active, cela devrait faire l'affaire:

RewriteRule ^/([^/]*)/([^/]*)/([^/]*)$ ?lang=$1&type=$2&mode=$3 [L] 

Aussi; vous feriez mieux de remplacer ces nombres magiques par des informations plus utiles si vous voulez les inclure dans votre URI.

Edit: Si c'est vraiment le contraire que vous souhaitez faire, voir la réponse par Matt S.

+0

Oui, je suis le contraire: P Merci! – werd

0

Vous devez gérer le chemin URI et requête séparément. Si les paramètres apparaissent dans ce même ordre, vous pouvez le faire:

RewriteCond %{QUERY_STRING} ^lang=([^&]+)&type=([^&]+)&mode=([^&]+)$ 
RewriteRule ^$ /%1/%2/%3? [L,R=301] 

Sinon, vous aurez besoin de les mettre dans l'ordre avant d'utiliser cette règle ou prendre chaque paramètre à la fois.

+0

Aucun d'entre eux ne fonctionne, y a-t-il autre chose que j'ai besoin de changer dans la configuration d'Apache ou autre? – werd

+0

@werd: Utilisez-vous le 'RewriteEngine on' obligatoire? Et où voulez-vous utiliser cette règle? – Gumbo

+0

Oui je l'utilise, je l'utilise sur l'index du site. Dans le répertoire racine j'ai les fichiers index.php et .htaccess – werd

Questions connexes