Visualizzazione risultati 1 fino 19 di 19

Discussione: [.htaccess] url_rewrite, come??

  1. #1
    Guest

    Predefinito [.htaccess] url_rewrite, come??

    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?

  2. #2
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    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ì:
    Codice:
    RewriteEngine On
    RewriteBase /car/
    RewriteRule ^(.*)$ index.php?browse=$1 [L]
    Ovviamente modificato "car" con il percorso nel quale metti l'htaccess.


    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)

  3. #3
    Guest

    Predefinito

    ho messo quello che mi hai suggerito ma non funziona

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    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

  5. #5
    Guest

    Predefinito

    ho messo:
    Codice:
    RewriteEngine On
    RewriteRule ^odp/([^.]*)$ /car/index.php?browse=$1
    ma non funziona lo stesso... gli url rimangono uguali

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    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

  7. #7
    Guest

    Predefinito

    i link devono combiare...
    counque il sito non e' su AV

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    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

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da dreadnaut
    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...

    a me serve solo il codice da mettere nel file .htaccess per fare quello che mi serve

  10. #10
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    boh, allora qua abbiamo dei problemi a spiegarci -.-

  11. #11
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    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:
    Citazione Originalmente inviato da phpone
    ma non funziona lo stesso... gli url rimangono uguali
    nel mod rewrite gli URL rimangono SI' uguali, la riscrittura viene fatta lato server, non è mica un redirect.

    Chiarito questo, approfondiamo il "non funziona"...


    Citazione Originalmente inviato da dreadnaut
    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
    Eh no.. ti pare che quelli di apache facevano ste pecionate
    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:
    '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/'.
    http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  12. #12
    Guest

    Predefinito

    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???

  13. #13
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da heracleum
    Eh no.. ti pare che quelli di apache facevano ste pecionate
    Se controlli bene quel che ho scritto su:
    RewriteRule ^(.*)$ index.php?browse=$1 [L]
    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 ?

    chiedo, che al momento non posso provare

  14. #14
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    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)

  15. #15
    Guest

    Predefinito

    ho messo

    RewriteEngine On
    RewriteBase /odp/
    RewriteRule ^(.*)$ index.php?browse=$1 [L]

    ho linkato

    sito.info/odp/news

    ma mi da errore 404

  16. #16
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    - 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)

  17. #17
    Guest

    Predefinito

    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!

  18. #18
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    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)

  19. #19
    Guest

    Predefinito

    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/

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •