View Full Version : [HTACCESS] Intercettare richieste in subfolders
magonicola
23-05-2011, 12:13
Salve,
ho un sito con un filemanager in php
http://nicotest.stidue.net/
e come si vede navigando nelle cartelle, ho un unico index.php nella root a cui vengono inoltrate le richieste di visualizzazione delle cartelle e dei files interni tramite stringhe del tipo:
http://nicotest.stidue.net/index.php?dir=migrationtool/scripts/
Vorrei sapere se è possibile fare in modo che gli URL seguano la struttura "naturale" del file system (ad es, riferendoci a prima, http://nicotest.stidue.net/migrationtool/scripts/ invece del codice su riportato) partendo da qualunque sottocartella del dominio nicotest.stidue.net, senza cambiare - o cambiando minimamente - l'index.php, che necessita in fondo solo del path "purgato".
Il tutto dovrebbe essere possibile mettendo un unico htaccess nella root ma non ne vengo a capo.
Grazie mille.
black_wizard
23-05-2011, 12:46
dovrai per forza cambiare anche l'index.php perchè ogni cartella è richiamata in questo modo index.php?dir=migrationtool%2F e dovrai modificarla anche se farai l'htaccess giusto.
Anzi è ancora peggio perchè per le modifiche che tu vuoi fare dovrai "obbligatoriamente" modificare "pesantemente" l'index.
Per farti un esempio ogni link della pagina è inserita senza il nome dell'host...in pratica senza http://www. e per fare come vuoi tu dovrai inserirlo per ogni link.
MarcioPG
24-05-2011, 01:22
Se come webserver usi Apche puoi usare la "mod rewrite". Una volta assicuratoti che sia attiva, nel file .htaccess puoi inserire qualcosa tipo (preso pari pari dal file .htaccess di cakePHP, noto framework applicativo PHP che lavora proprio con "url pulite" come vorresti fare tu):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
RewriteEngine On: attiva il modulo di "riscrittura" della url
RewriteCond %{REQUEST_FILENAME} !-d e !-f fanno in modo che la regola non venga eseguita se l'url digitato si riferisce ad una directory o ad un file fisicamente esistenti.
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] è "la magia": la prima parte dice di "prendere tutta la url digitata" (a cui si fara' riferimento con $1) e nella seconda istruisce Apache a "riscrivere" la url (ovvero a "lavorarla" internamente) come index.php?url=$1.
Quindi il nostro script index.php, messo nella stessa directory dell'.htaccess, riceverà fisicamente una chiamata "rimappata" in base alla regola.
Chiamando ad esempio http://www.esempio.com/ciao/frat il file index.php verrà "chiamato" con la url '/ciao/frat'. A quel punto puoi analizzare la url "chiamata" (che trovi in $_SERVER["REQUEST_URI"]) per costruire la pagina da rendere al browser...
edit: non avevo letto bene la domanda... con quanto sopra dovresti modificare il codice dell'index.php. Forse si può modificare la regola di riscrittura in maniera adeguata ma bisogna guardare la documentazione della mod rewrite di apache... rimane comunque poi il problema dei link generati dal file manager stesso che sono cmq "sporchi", quindi dovresti in ogni caso mettere mano al index.php per farglieli generare "puliti"...
MrEnrich
14-07-2011, 18:56
mi allaccio al discorso del file manager..
ne ho creato uno in php che legge le immagini presenti in una cartella su ftp e le inserisce nel database...rinominandole ..mettendo tipo un prefisso 2011_
ogni volta che si inseriscono nuove foto vi è un controllo che vede le foto nuove e le inserisce nel db..
poichè faccio l'up di molte foto.. sarebbe meglio organizzarle per cartelle... volevo sapere se potevo in qualche modo leggere direttamente la cartella da ftp e procedere all'inserimento in base alle cartelle..
black_wizard
15-07-2011, 12:52
certo che puoi farlo.
Come tu hai fatto lo script per leggere le immagini dentro una cartella, puoi fare la stessa cosa per leggere solo le cartelle.
MrEnrich
15-07-2011, 13:06
certo che puoi farlo.
Come tu hai fatto lo script per leggere le immagini dentro una cartella, puoi fare la stessa cosa per leggere solo le cartelle.
se sapessi come.. almeno ci proverei :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.