-
explode
Premetto che è la prima volta che sto utilizzando mod rewrite, e non so se sto procedendo nel modo corretto.
Il codice presente nel file .htaccess per ora è solo questo:
RewriteEngine On
RewriteRule ^(.+).html$ pagina.php?id=$1Nella pagina index.php ho l'elenco con links delle regioni e delle province:
es: Lombardia.html dove a pagina.php arriva il parametro Lombardia e si esegue la query dove regione = Lombardia.
Quando il link è Lombardia/Bergamo.html in pagina.php arriva il parametro $_GET[id] che equivale a Lombardia/Bergamo.
Con $divisore=explode($_GET[id]); posso ottenere:
$divisore[0] che in questo caso è Lombardia
$divisore[1] che equivale a Bergamo in questo esempio.Poi eseguo la query in pagina.php dove regione=$divisore[0] e provincia=$divisore[1].
E funziona, anche se non so sia una procedura corretta nell'utilizzo del mod rewrite.
Al momento sto "dicendo" al codice: if ($divisore[1]==""){fai questo} else{altra condizione}
Il punto è che quando arriva solo il parametro determinato dalla regione, esiste solo $divisore[0] e $divisore[1] non esiste, quindi mi riporta l'errore anche se funziona lo script.Sto cercando soluzioni.
Mi sfugge ad esempio una cosa di questo tipo:
RewriteEngine On
RewriteRule ^(.+).html$ pagina.php?id=$1&secondoparametro=$2in questo caso come devo fare per "recuperare" il secondo parametro, ovvero $2?!
A presto.
-
@another said:
Premetto che è la prima volta che sto utilizzando mod rewrite, e non so se sto procedendo nel modo corretto.
Il codice presente nel file .htaccess per ora è solo questo:
RewriteEngine On
RewriteRule ^(.+).html$ pagina.php?id=$1Nella pagina index.php ho l'elenco con links delle regioni e delle province:
es: Lombardia.html dove a pagina.php arriva il parametro Lombardia e si esegue la query dove regione = Lombardia.
Quando il link è Lombardia/Bergamo.html in pagina.php arriva il parametro $_GET[id] che equivale a Lombardia/Bergamo.
Con $divisore=explode($_GET[id]); posso ottenere:
$divisore[0] che in questo caso è Lombardia
$divisore[1] che equivale a Bergamo in questo esempio.Poi eseguo la query in pagina.php dove regione=$divisore[0] e provincia=$divisore[1].
E funziona, anche se non so sia una procedura corretta nell'utilizzo del mod rewrite.
Al momento sto "dicendo" al codice: if ($divisore[1]==""){fai questo} else{altra condizione}
Il punto è che quando arriva solo il parametro determinato dalla regione, esiste solo $divisore[0] e $divisore[1] non esiste, quindi mi riporta l'errore anche se funziona lo script.Sto cercando soluzioni.
Mi sfugge ad esempio una cosa di questo tipo:
RewriteEngine On
RewriteRule ^(.+).html$ pagina.php?id=$1&secondoparametro=$2in questo caso come devo fare per "recuperare" il secondo parametro, ovvero $2?!
A presto.
Credo che dovresti fare due rule.
Una per il pattern della regione l'altra per il pattern multiplo.
Inoltre visto che stai usando una struttura a directory ti sconsiglio di usare l'estensione .html.
Verrebbe quindi una cosa del genere:RewriteRule ^(.+)$ pagina.php?id=$1
RewriteRule ^(.+)/(.+)$ pagina.php?id=$1&secondoparametro=$2In questo modo se l'url combacia con la prima regola ti reindirizza sul primo tipo di url, sennò se ha uno slash va sul secondo.
Poi nel php invece di splittare con explode fai semplicemente $_GET['id'] e $_GET['secondoparametro'] con i vari "IF" del caso.
Bada che non ho testato la sintassi quindi potrebbe esserci qualche errore, però il concetto è questo.
-
sempre senza test a naso imho non funziona perchè la seconda regola è selettiva mentre la prima becca tutto quindi dovrebbe sovrascrivere la seconda (sarebbe da provare ma è semplice e puoi verificarlo).
Per quanto riguarda l'errore che ti genera lo script non devi verificare che sia uguale a stringa vuota ma devi verificare che l'array abbia un numero di elementi coerenti oppure testare l'esistenza dell'elemento.
verificare il numero di elementi:
if count($array)==2
//qui ci sono 2 parametri
else
//qui ce n'è uno soloverificare l'esistenza
if (isset($array[1])
//qui ci sono due parametri
else
//qui ce n'è uno solociauz
-
personalmente farei così
RewriteRule ^([^/]+)/([^/]+).html$ pagina.php?regione=$1&provincia=$2
RewriteRule ^([^/]+)/$ pagina.php?regione=$1lombardia/bergamo.html
lombardia/ciao!