2011-02-10 13 views
34

Ho un progetto PHP in cui ho bisogno di inviare un carattere hash (#) all'interno del percorso di un URL. (http://www.example.com/parameter#23/parameter#67/index.php) Ho pensato che l'urlencode lo avrebbe consentito, convertendo l'hash in% 23Utilizzo di mod_rewrite per convertire i percorsi con caratteri hash in stringhe di query

Ma ora vedo che anche l'hash con codifica url consente al browser di trattare tutto a destra come il frammento di URL (o query).

C'è un modo per passare un hash attraverso, o devo fare una sostituzione di carattere prima di urlencode?

Modifica per aggiungere (19 Settembre 2017):

Si scopre che stavo chiedendo la domanda sbagliata. Il mio problema non consisteva nell'usare il carattere hash all'interno del percorso (la codifica funziona), ma nell'uso di mod_rewrite per convertirlo in una stringa di query. Non ero riuscito a ricodificarlo all'interno di RewriteRule. Modificherò il titolo per abbinare.

Ecco la regola di riscrittura che usavo:

RewriteEngine On 
# convert path strings into query strings 
RewriteRule "^(.*)/(.*)/hashtags.php"  /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L] 

Appena ho aggiunto il tag B, ha funzionato correttamente:

RewriteEngine On 
# convert path strings into query strings 
RewriteRule "^(.*)/(.*)/hashtags.php"  /hashtags.php?parameter_1=$1&parameter_2=$2 [QSA,L,B] 
+0

In che modo si utilizza quell'URL? – Gumbo

+0

Credo che urlencode dovrebbe cambiarlo in% 23, puoi fornire un codice di esempio? –

+0

Sto creando collegamenti statici a PDF creati dinamicamente. Sto usando modrewrite per passare gli elementi del percorso in $ _GET. Sono i parametri di prodotto necessari per creare il PDF. Alcuni prodotti hanno etichette hash nei nomi dei prodotti. – Mark

risposta

84

Encode Hash nell'URL con% 23

http://twitter.com/home?status=I+believe+in+%23love 

"credo in #love"

Codifica URL Riferimento: http://www.w3schools.com/tags/ref_urlencode.asp

+0

Grazie amico! È una risposta abbastanza nuova :) – Spider

+2

Funziona, sorprendendoci ci è voluto così tanto tempo per ricevere una risposta corretta – benjineer

+0

Contrassegnato come corretta questa risposta. Mi chiedo se ci sia stato un cambiamento nei browser da quando l'ho chiesto per la prima volta. Ho sicuramente provato% 23. – Mark

Problemi correlati