Ben beklendiği gibi "Evet, o mostly çalışacaktır." Için Grant'ın cevabını değişiklik istiyorum
Özellikle, mevcut sorgu dizeleri getirmedi mod_rewrite
'davranışı şaşırtıcı olabilir. Bir örnek olarak, size verilen URL dönüştürür aşağıdaki kural, atalım:
RewriteRule /contact /index.php?p=contact
Bu doğru /contact
/index.php?p=contact
yeniden yazma ve sayfa adı $_GET['p']
erişilebilir olacaktır. Eğer sayfa adı dışında diğer parametreler kullanan bir komut ile bu tekniği kullanmak Ancak, biraz yanıltıcıdır alır. Bu kural aynı zamanda /contact?person=Joe
/index.php?p=contact
çevirir. person=Joe
parametresi tamamen kaybolur! Bu ile başa çıkmak için iki yol vardır.
Basit yolu özgün sorgu dizesi yer olacaktır üstünlüğü [QSA]
("sorgu dizesi append") bayrak, kullanmak için after çeviri kural verilen parametreler, {[ (2)]} ile /index.php?p=contact&person=Joe
,
RewriteRule /contact /index.php?p=contact [QSA]
Ancak, bu mümkün sizin p=
parametresi üzerine almak için yapar. Tatil /contact?p=about
/index.php?p=contact&p=about
için yeniden alacak, böylece $_GET['p']
sizin komut değil, "temas" "hakkında" dönecektir. Bu sorunu çözmek için, bunun yerine QUERY_STRING
değişkeni kullanabilirsiniz:
RewriteRule /contact /index.php?%{QUERY_STRING}&p=contact
Bu garanti o $_GET['p']
olacak always return "temas" ne olursa olsun ziyaretçiler URL'ler ile karıştırmasını olsun, bu kuralı kullanarak. :-)