2011-12-11 13 views
12

Występuje problem z parametrem get w połączeniu z regułą przepisywania htaccess. Poniżej znajduje się link urlencode() 'ed; reguła przepisywania używam do przekierowania do index.php, a na końcu print_r ($ _ GET) na index.php. Jak widać, ampersand w kształcie urki i nie jest częścią wartości zmiennej static, ale zamiast tego i wbrew moim oczekiwaniom zostanie zinterpretowany jako separator zmiennej. Dlaczego?

Link początkowa:

<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

jaki sposób '$ _SERVER [ "QUERY_STRING"]' szukać tego wniosku? I czy przepisywanie nie występuje, gdy ręcznie wywołasz 'index.php? Static = ... '? – mario

+0

Ręczne przeglądanie do "index.php? Static = Game-Tech-% 26-Arts-Lab" pokazuje stronę dobrze - $ _SERVER ["QUERY_STRING"] czyta "[QUERY_STRING] => static = Game-Tech- & -Arts-Lab " – kontur

Odpowiedz

23

Ach, w porządku. Ciekawy. Wygląda na to, że istnieje specjalne rozwiązanie do przechowywania tych znaków towarowych i unikania. Użyj [B] flag for Rewriterules.

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

To ma urlencode znaków specjalnych podczas interpolacji $1 zastępczy. Działa tylko z Apache 2.2, ale wierzę.

Znaleziono kilka odnośników:

+0

O, to nowości! To właśnie naprawiło to. Będę musiał nauczyć się tych przeróbek flag jeszcze raz - dziękuję za pomoc mario! – kontur

+0

Tego też nie wiedziałem. Jest nowe. – mario

+0

Fantastyczne - dziękuję za to! – Simeon

Powiązane problemy