2010-07-30 8 views
3

Je développe un site web en utilisant PHP. Mon .htaccess a cette règle de réécriture:Accéder aux variables GET avec PHP + .htaccess

RewriteEngine On 
RewriteRule ^book/([^/]*)\.html$ book.php?title=$1 [L] 

Ainsi, l'URL qui ressemblait à: www.example.com/book.php?title=title-of-the-book se transforme en www.example.com /book/title-of-the-book.html

Dans un cas spécifique, à partir d'une autre page du site, je souhaite créer un lien vers des pages de ce type: www.example.com/book.php?title= title-of-the-book? myfield = 1 qui devient ensuite www.example.com/book/title-of-the-book.html?myfield=1.html

Être ther, je ne peux plus accéder aux variables GET en utilisant la méthode habituelle de PHP

$variable = $_GET['myfield'] 

Comment résolvez-je ce problème?

Répondre

7

Spécifiez [QSA] (ajout de chaîne de requête) pour pouvoir transmettre une chaîne de requête après votre URL.

RewriteEngine On 
RewriteRule ^book/([^/]*)\.html$ book.php?title=$1 [QSA,L] 

PS: Pourquoi utilisez-vous * ici? Le + ne conviendrait-il pas mieux?

+0

Je ne connais pas le '*' et le '+'. Je ne comprends pas très bien la réécriture d'URL, donc un de mes amis a écrit ces règles pour moi. Pourquoi pensez-vous qu'il devrait y avoir un '*' 'au lieu d'un' + '? – rlc

+2

'*' est zéro ou plusieurs caractères, c'est-à-dire 'book/.html' serait également autorisé. '+ 'est un ou plusieurs caractères, donc' book/.html' ne correspondrait pas. – NikiC

Questions connexes