2010-11-01 17 views
27

Je rencontre des problèmes pour conserver les paramètres de l'URL après une réécriture d'URL htaccess..htaccess RewriteRule pour préserver les paramètres de l'URL GET

Mon rewrite htaccess est la suivante:

RewriteEngine on 
RewriteRule ^([a-z]{2,2})/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2 

Ce qui signifie:

domain.com/index.php?lang=en&page=product affiche comme domain.com/en/product

Pour une raison quelconque, quand j'ajoute un ?model=AB123&color=something à la fin de mes URL je suis impossible de récupérer ces paramètres dans php en utilisant $_GET['model'] et $_GET['color'] même s'ils sont présents dans l'URL affichée.

Pourquoi les variables ne sont-elles pas transmises?

Répondre

61

Vous devez ajouter la balise [QSA] (chaîne de requête ajoutée). Essayez

RewriteEngine on 
RewriteRule ^([a-z]{2,2})/([a-zA-Z0-9_-]+)$ index.php?lang=$1&page=$2 [QSA] 

Voir http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

+4

Merci beaucoup. Ça a marché. C'est marrant à quel point la solution est simple après certaines choses que j'ai essayées ... – Enkay

+0

Cela ne semble pas fonctionner sur le mien, même avec la balise QSA. La page correcte s'affiche, mais comme le $ _GET semble impossible à obtenir, il génère de nombreuses erreurs. J'utilise 'RewriteRule^détails/([^ /]) /? $ Détails? Pin = $ 1 [QSA]' – Lee

+0

Merci pour la réponse. Ça a marché. – Vinay