2011-12-11 13 views
12

Sto riscontrando un problema con un parametro get in combinazione con una regola di riscrittura htaccess. Di seguito è riportato il link urlencode() 'ed; la regola di riscrittura che uso per reindirizzare a index.php e infine a print_r ($ _ GET) su index.php. Come si può vedere, la e commerciale con rivestimento in urlo non fa parte del valore per statica variabile, ma invece e contrariamente alle mie aspettative viene interpretata come un seperatore variabile. Perché?

collegamento iniziale:

<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

Come ha fatto il '$ _SERVER [ "QUERY_STRING"]' look per tale richiesta? E la riscrittura non si verifica quando invochi manualmente 'index.php? Static = ...'? – mario

+0

Navigando manualmente in "index.php? Static = Game-Tech-% 26-Arts-Lab" mostra la pagina bene - il $ _SERVER ["QUERY_STRING"] legge "[QUERY_STRING] => static = Game-Tech- & -Arts-Lab " – kontur

risposta

23

Ah, va bene. Interessante. Sembra che ci sia una soluzione speciale per mantenere la e commerciale in particolare sfuggita. Utilizzare lo [B] flag for Rewriterules.

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

Questo dovrebbe UrlEncode caratteri speciali quando interpolando il $1 segnaposto. Funziona solo con Apache 2.2, tuttavia credo.

trovato alcuni riferimenti:

+0

Oh, questa è una novità! Questo l'ha appena risolto. Dovrò imparare a riscrivere le bandiere ancora di più - grazie per l'aiuto mario! – kontur

+0

Non lo sapevo neanche io. È nuovo. – mario

+0

Fantastico - grazie per questo! – Simeon

Problemi correlati