/ / Crea variabili php dall'URL senza get - php, .htaccess, mod-rewrite

Crea una variabile php dall'URL senza get - php, .htaccess, mod-rewrite

Sto generando un link per il download che ho inviatotramite e-mail per scaricare un file pdf. Ci sono alcuni parametri (codificati Base64) nel link di download per verificare il profilo / utente corretto. Voglio essere il link per il download come segue:

www.example.com/download/ZW5jb2RlbXljb2Rl

I parametri vengono aggiunti direttamente dopo la sottodirectory. So che può essere fatto con php GET come segue: www.example.com/download/index.php?base64=ZW5jb2RlbXljb2Rl

Ma a mio parere è meglio usare il primo URL. Tranne che non ho idea di come realizzare questo con php. La mia ipotesi devo fare una riscrittura in htaccess?

Ho trovato questo thread: Riscrivere un URL per un parametro PHP dall'interno di una sottodirectory

Ma ho già alcune riscritture htaccess (JOOMLA), ed è solo per l'unica cartella ...

Grazie per i tuoi sforzi!

risposte:

2 per risposta № 1

Non hai altra scelta che usare la riscrittura per questo Questo è ciò per cui è.

Ma ho già alcune riscritture htaccess (JOOMLA), ed è solo per l'unica cartella ..

Questo assolutamente non importa. La tua configurazione di Apache può contenere tutte le riscritture di cui hai bisogno. Ho visto 100 "s.

Quindi potresti semplicemente aggiungere queste regole above le tue attuali regole di Joomla e dovrebbe funzionare.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^download/(.+)/?$ /download/index.php?base64=$1 [L]

Altrimenti dovresti fare ciò che Jonathan ha detto e usare index.php nel tuo URL.


1 per risposta № 2

Puoi usare echo basename($_SERVER["PHP_SELF"]); per vedere la tua pagina attuale. Puoi esplodere la stringa dopo l'ultima / usando quello:

$filename = explode("/", basename($_SERVER["PHP_SELF"]));

In questo modo se il tuo link è www.example.com/download/ZW5jb2RlbXljb2Rl, il valore del nome del file sarà "ZW5jb2RlbXljb2Rl".

Non sono sicuro che questa sia la tua domanda, ma dovrebbe funzionare a seconda dell'utilizzo.