sto provando l'url rewrite...
ho:
ho un url del tipo:
xttp://www.sito.info/car/index.php?browse=/sez1/
e vorrei farla diventare
xttp://www.sito.info/car/sez1/
come si puo' fare?
sto provando l'url rewrite...
ho:
ho un url del tipo:
xttp://www.sito.info/car/index.php?browse=/sez1/
e vorrei farla diventare
xttp://www.sito.info/car/sez1/
come si puo' fare?
Dando per buono che:
- con "car" intendevi una certa cartella o percorso
- che vuoi (e consiglio) piazzare l'htaccess (usare l'apposito tool -icona con rotelle- nel pannello av) puntualmente in ciascuna di queste sottocartelle o percorsi, quindi non un unico htaccess piazzato in root -che potrebbe appesantire ogni richiesta, anche di semplici immagini-.
Farei così:
Ovviamente modificato "car" con il percorso nel quale metti l'htaccess.Codice:RewriteEngine On RewriteBase /car/ RewriteRule ^(.*)$ index.php?browse=$1 [L]
Calcola che questo primo slash prima di sez1 che avevi messo come esempio:
/car/index.php?browse=/sez1/
io lo TOGLIEREI (e non verrebbe cmq con il rewrite che vedi sopra, quindi immaginati un parametro passato come:
/car/index.php?browse=sez1/
Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)
ho messo quello che mi hai suggerito ma non funziona
da: xttp://www.sito.info/car/index.php?browse=/sez1/
a: xttp://www.sito.info/car/sez1/
non so' se sia il metodo migliore ma io uso una cosa del tipo:
RewriteEngine On
RewriteRule ^car/([^.]*)$ /car/index.php?browse=$1
in questo modo tutto quello che non contiene un punto viene passato come valore di browse. Il controllo del punto è necessario altrimenti la regola vale anche per index.php, e ti rimanda a /car/index.php?browse=index.php, che ti rimanda a ... etc etc
per evitare il problema puoi mettere index.php nella directory superiore, e trasformare la regola in
RewriteRule ^car/(.*)$ /indexcar.php?browse=$1
Io uso entrambi i metodi al momento, per due sezioni diverse, e non ho trovato grossi vantaggi nell'uno o nell'altro - tendo a preferire il primo per avere le cose piú ordinate ;)
Ultima modifica di dreadnaut : 24-08-2006 alle ore 14.05.15
ho messo:
ma non funziona lo stesso... gli url rimangono ugualiCodice:RewriteEngine On RewriteRule ^odp/([^.]*)$ /car/index.php?browse=$1
lo chiedo giusto per sicurezza: hai attivato il mod_rewrite, e hai modificato il .htaccess dal pannello ? O_o'''
Edit: 'spe, forse non ho capito io: vuoi che l'url cambi nella barra del browser o cosa?
Ultima modifica di dreadnaut : 24-08-2006 alle ore 14.16.39
i link devono combiare...
counque il sito non e' su AV
beh, con mod_rewrite i link non cambiano nella barra del browser - non è un redirect, avviene tutto sul server. tu scrivi /car/blabla e internamente al server questo viene trasformato in /car/index.php?browse=blabla - ma tu su browser visiti sempre e solo /car/blabla
questo lo so... so come funziona l' url rewrite...Originalmente inviato da dreadnaut
a me serve solo il codice da mettere nel file .htaccess per fare quello che mi serve
boh, allora qua abbiamo dei problemi a spiegarci -.-
Prima di tutto, come saprai, nel 99% dei casi come risposta di una proposta di soluzione "non funziona" potrebbe celare dietro tante cose, soprattutto in questi casi dove magari sfugge qualcosa.
Quindi:
nel mod rewrite gli URL rimangono SI' uguali, la riscrittura viene fatta lato server, non è mica un redirect.Originalmente inviato da phpone
Chiarito questo, approfondiamo il "non funziona"...
Eh no.. ti pare che quelli di apache facevano ste pecionateOriginalmente inviato da dreadnaut
Se controlli bene quel che ho scritto su:
RewriteRule ^(.*)$ index.php?browse=$1 [L]
noterai questa particella finale: [L]
questo indica che è l'unico e l'ULTIMO (Last) rewrite che dovrà fare, proprio per evitare ricorsioni teoricamente infinite di riscritture (per dire perché c'è un numero max dopo il quale si ferma).
Cito la fonte apache org:
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html'last|L' (last rule)
Stop the rewriting process here and don't apply any more rewriting rules. This corresponds to the Perl last command or the break command from the C language. Use this flag to prevent the currently rewritten URL from being rewritten further by following rules. For example, use it to rewrite the root-path URL ('/') to a real one, e.g., '/e/www/'.
Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)
scusa
se ho capito bene sono io a dover modificare i link nella pagina
invece di farli puntare a index.php?browse=abc devo farli puntare su abc???
uh vero, mi ero svanito di [L] e direttive varie. Ma quella regola non porta almeno ad -una- riscrittura del tipo: index.php -> index.php?browse=index.php ?Originalmente inviato da heracleum
chiedo, che al momento non posso provare
phpone:
esatto, tu nei tuoi link di navigazione della tua pagina o template dovrai appunto indicare link del tipo:
xttp://www.sito.info/car/sez1/
poi -visto che in realtà non esiste quella cartella- ci penserà il modulo rewrite a passare (sotto sotto, senza visualizzare la riscrittura nell'indirizzo della pagina) la palla allo script index.php che sta direttamente sotto /car/ passandogli quel "sez1/" (ricordati, senza lo slash iniziale, a dispetto di come avevi chiesto nel ptimo post).
dreadnaut:
ah be' certo, infatti si può perfezionare senza dubbio,
questo sempre se qualcuno per un motivo o per l'altro smanettando dovesse scrivere direttamente a manina nell'indirizzo del browser cose tipo:
xttp://www.sito.info/car/index.php?browse=/sez1/
Poi chiarisco che non ci ho studiato chissà quanto con le possibilità del rewrite, ho sempre studicchiato di preciso quel che mi serviva all'occorrenza, al momento, per es quel [L] mi è piaciuto subito e penso sia fondamentale in svariati casi.
Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)
ho messo
RewriteEngine On
RewriteBase /odp/
RewriteRule ^(.*)$ index.php?browse=$1 [L]
ho linkato
sito.info/odp/news
ma mi da errore 404
- Il file .htaccess l'hai messo sotto la cartella /odp/ ?
- mi confermi che nello script index.php gestisci il parametro senza lo slash / iniziale? come /odp/index.php?browse=news/
se è così forse è il caso che indichi qual è questo tuo sito esterno, per provare direttamente alcuni url... basta che dici il nome del dominio di 2' livello (per es. "sito") e che tipo di tld (top level domain, .info, .com, etc..)
Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)
e' un sito di test...
ci provo gli script prima di metterli su siti (av o altri)
phpone.hozter.info/odp
l'htaccess e' nella cartella odp
gestisci il parametro senza lo slash / iniziale? --> boh, non riesco a trovare dove lo richiama!
Beh certo, basta che scrivi lo slash FINALE (come è giusto per le directory) e funziona
dico semplicemente scrivendolo nella barra degli indirizzi del browser e nei tuoi link
phpone.hozter.info/odp/
Di solito il browser corregge questo errore quando vede che il FILE (o risorsa qualsiasi) di nome odp non è esistente -perché senza slash si dà per scontato che sia un file- e allora tenta di raggiungere una cartella aggiungendo di propria iniziativa lo slash finale.
In questo caso essendoci di mezzo un rewrite si vede che il browser viene infinocchiato in qualche modo.. boh
Comunque come è stato detto più volte nel forum le cartelle vanno chiamate con lo slash finale (perché l'ho ripetuto? bah ).
Quindi direi che funziona una favola (ghghgh)
Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)
per modificare i link mi ci vuole tempo
ma se dal browser richiamo una qualsiasi sottocartella
come phpone.hozter.info/odp/Arts/ mi fa sempre vedere la index di odp/