2011-12-11 7 views
12

Bir htaccess yeniden yazma kuralı ile birlikte get parametresiyle ilgili bir sorunla karşılaşıyorum. Aşağıda urlencode() 'ın bir bağlantısı var; index.php'ye ve son olarak index.php'de bir print_r ($ _ GET) adresine yeniden yönlendirmek için kullandığım yeniden yazma kuralı. Gördüğünüz gibi, değiştirilen ampersan değişkeni statik değerin bir parçası değildir, bunun yerine benim beklentimin aksine değişken bir ayırıcı olarak yorumlanır. Neden?

Başlangıç ​​linki:

<a href="static/Game-Tech-%26-Arts-Lab">link</a> 

Htaccess:

RewriteRule ^static/(.*)$ /index.php?static=$1 [L] 

index.php:

Array ([static] => Game-Tech- [-Arts-Lab] =>) 
+0

Nasıl '$ _SERVER [ "QUERY_STRING"]' bu istek için benziyordu? Ve index.php? Static = ... 'manüelini çağırdığınızda yeniden yazma işlemi gerçekleşmiyor mu? – mario

+0

"index.php? Static = Game-Tech-% 26-Arts-Lab" sayfasına göz atmak için sayfayı el ile görüntüleyebilirsiniz - $ _SERVER ["QUERY_STRING"] "[QUERY_STRING] => statik = Oyun-Tech- & -Arts-Lab " – kontur

cevap

23

Ah, tamam. İlginç. Bu ampersanın özel olarak kaçmasını sağlamak için özel bir çözüm var gibi görünüyor. [B] flag for Rewriterules'u kullanın.

RewriteRule ^static/(.*)$ /index.php?static=$1 [L,B] 

Bu $1 yer tutucu interpolating zaman özel karakterler urlencode gerekiyordu. Sadece Apache 2.2 ile çalışıyor ancak inanıyorum.

Bulunan birkaç referanslar:

+0

Oh, bu haber! Bu sadece düzeltildi. Bu bayrakları biraz daha yeniden yazmalıyım - yardım mario için teşekkürler! – kontur

+0

Bunu da bilmiyordum. Bu yeni. – mario

+0

Fantastik - bunun için teşekkürler! – Simeon