2012-02-25 4 views
1

J'étais donc assez fier de moi parce que pour la toute première fois, j'ai trouvé comment mettre à jour le fichier .htaccess sans demander d'aide (une nouvelle étape pour moi).Essayer de faire fonctionner la pagination avec .htaccess réécrire

Voici ce que j'ai ajouté:

RewriteRule albums/(.*)/(.*)/(.*)/ albums.php?language=$1&searchindex=$2&searchparameterdata=$3 

qui a travaillé pour traduire mes liens vers: www.my domain.com/albums/en/music/beatles/

Mais .. vint pagination et je suis à nouveau perplexe. En cliquant sur ma page suivante, il ajoute maintenant à l'URL ci-dessus comme par exemple ..

beatles/?language=en&locale=us&page=2&searchindex=music&searchparameter=keywords&searchparameterdata=beatles& 

Est-ce que je peux corriger dans mon .htaccess .. en gardant le format de mon URL de travail et de laisser encore du travail de mise en page?

Répondre

1

Je pense que vous rendez trop difficile pour vous; pourquoi ne pas envoyer tous les paramètres dans un seul paramètre et laisser le php décider quoi en faire? Essayez ceci:

RewriteRule albums/(.*) albums.php?parameters=$1 [L] 

Et puis dans votre php:

parse_str($_GET['parameters], $parameters); 
do_stuff($parameters['searchindex'], $parameters['page'], ...); 

agréable et facile :)

départ http://php.net/manual/en/function.parse-str.php pour le manuel sur parse_str(), do_stuff() est évidemment inventées;)

+0

Oh wow .. quelle idée géniale! Merci beaucoup! C'est la réponse! – jeffro

0

Vous pouvez essayer d'ajouter le drapeau QSA à votre RewriteRule.

RewriteRule albums/(.*)/(.*)/(.*)/ albums.php?language=$1&searchindex=$2&searchparameterdata=$3 [QSA] 

De même, vous voudrez peut-être vérifier vous-même votre lien de pagination. Ma conjecture est la chaîne de requête est en fait une partie de la pagination href. Si c'est le cas, alors je ne peux pas trouver un moyen facile de supprimer la chaîne de requête via le mod-rewrite. Vous devrez modifier vos liens de pagination afin que href n'inclue que les paramètres de chaîne de requête souhaités. Dans ce cas, le seul paramètre de chaîne de requête que vous souhaitez utiliser est la partie page=2.