2009-06-04 3 views
1

Je suis un débutant à mod_rewrite et je me demandais s'il y a un moyen que vous pourriez faire sur le script de réécriture qui gère et le nombre de variables que vous lui lancez.mod_rewrite pour n'importe quel nombre de variables

Exemple:

www.krisnicolaou.com/index.php?id=5&sort=asc&limit=25&param=first_name

à

www.krisnicolaou.com/5/asc/25/first_name

... mais vous pouvez également transmettre ces variables sur une autre page et il travaillerait avec qu'un script:

www.krisnicolaou.com/index.php?page=view&action=add

à

www.krisnicolaou.com/view/add/

Je ne veux pas essentiellement se limiter à combien de paramètres que je peux ajouter à la fin et ne pas avoir à modifier constamment le fichier .htaccess.

Merci d'avance.

+0

Vous souhaitez donc que les URL demandées du premier formulaire ('/index.php? Page = view & action = add') soient redirigées vers le second formulaire ('/view/add/')? Ou préférez-vous la direction inverse? – Gumbo

Répondre

1

Quelque chose comme this.

+0

Torez et great_llama, donc l'un d'entre vous a lié à lui, et l'autre a accepté le lien comme réponse, mais aucun d'entre vous pensait que la réponse originale valait la peine d'être upvote? Où est l'amour? – bmb

1

Habituellement, on veut prendre des urls «propres» et les convertir en paramètres. Ce que vous demandez est le contraire. Voici un ensemble de règles testé.

RewriteEngine on 

RewriteCond %{QUERY_STRING} !^$ 
RewriteCond %{QUERY_STRING} ^([^=]*)=([^&]*)(&.*)? 
RewriteRule ^(.*/)?([^/]+) $1%2/$2?%3 [L] 

Cela fonctionnera pas s'il y a des paramètres, et pour chaque param, il ajoutera à l'URL et le retirer de la liste des param. Le [N] le fera fonctionner jusqu'à ce qu'il n'y ait plus de paramètres.

Pour tester, je crée la structure suivante:

view 
view/add 
view/add/index.htm 

je mets les règles ci-dessus dans un fichier .htaccess.

test normal: http://www.theeggeadventure.com/2009/index.htm?page=view&action=add

params supplémentaires (404) Test http://www.theeggeadventure.com/2009/index.htm?page=view&action=add&foo=bar URL /2009/view/add/bar/index.htm n'a pas été trouvée sur ce serveur.

+1

Hey, merci pour la réponse rapide, mais pour une raison quelconque, il ne fonctionne pas. Une idée pourquoi? Et ne dites pas "avez-vous allumé le moteur de réécriture" :) Merci – Torez