• User

    Rewrite Rule

    Ciao a tutti,

    Ho impostato le RewriteRule ai link del mio sito, in modo d'avere i link .html

    Il problema è sorto nel momento in cui ho creato la paginazione di alcuni risultati estratti dal db mysql.

    Ho un menù con varie sezioni, per il quale ho impostato la seguente regola:

    RewriteRule ^sez_([^/]+).html /index.php?sezione=$1
    

    e fin qui tutto bene....

    Per ogni sezione ho creato la paginazione limit 0,10 etc.... il cui link segue la regola:

    RewriteRule ^cat_([^/]+)/pag_([^/]+).html /index.php?categoria=$1&pg=$2
    

    il link è:
    [php]<a href="cat_".$GET["sezione"]."/pag".$i.".html" title="Vai alla pagina $i">$i</a>[/php]

    Il punto è che quando clikko sulla pagina successiva, mi allega il nuovo url a quello precedente, per cui se sono già in sezione x premendo pag3
    scrive:
    http://sito/sezionex/sezionex/pag_3.html/
    e lo stesso se cambio sezione dal menù

    Perchè?
    Forse devo mettere una RewriteCond, ma non sò come si fa?

    Qualche aiutino.... :bho:

    Grazie...


  • Super User

    prova a creare link assoluti e non relativi.

    quindi del tipo:
    xttp://www.tuosito.it/sezione etc etc etc

    :ciauz:


  • User

    @Tymba said:

    prova a creare link assoluti e non relativi.

    quindi del tipo:
    xttp://www.tuosito.it/sezione etc etc etc

    :ciauz:

    Okay, grazie Tymba....
    funziona perfettamente, ma solo mettendo il link assoluto nel collegamento della pagina.

    Nel file htaccess deve rimanere com'era (^sez_(...)...)
    altrimenti dà errore 404 page not found...

    Perchè? forse c'è qualche reindirizzamento interno del server che non conosco vedi htdocs etc... cmq l'importante è che funzioni!!!

    Ciao e grazie ancora....

    PS/Purtroppo però non sono ancora riuscita a far funzionare l'htaccess in locale sul mio server...dove trovo la configurazione standard del file di apache? Ho girato tutto il web. E cmq è strano perchè dal test sembra funzionare, solo che non riconosce la variabile e non la mostra. Nella directory locale del sito non lo vede proprio...Boh, non ci capisco più niente.....

    :bho:


  • Super User

    devi mettere l'url assoluto perchè quello relativo è relativo 😛

    un url relativo è relativo appunto alla posizione corrente quindi:

    se dalla pagina xttp://www.miosito.it/sezione/pagina.htm
    metto un link verso /sezione/pagina.htm essendo un link relativo uscirà
    xttp://www.miosito.it/sezione/sezione/pagina.htm

    ingarbugliato ma spero di essermi spigato.

    per l'url rewrite in locale ci sto lavorando 😛 serve anche a me e appena trovo la soluzione (se esiste) te la spiffero. :fumato:


  • User

    @Tymba said:

    devi mettere l'url assoluto perchè quello relativo è relativo 😛

    un url relativo è relativo appunto alla posizione corrente quindi:

    se dalla pagina xttp://www.miosito.it/sezione/pagina.htm
    metto un link verso /sezione/pagina.htm essendo un link relativo uscirà
    xttp://www.miosito.it/sezione/sezione/pagina.htm

    ingarbugliato ma spero di essermi spigato.

    per l'url rewrite in locale ci sto lavorando 😛 serve anche a me e appena trovo la soluzione (se esiste) te la spiffero. :fumato:

    La differenza tra assoluto e relativo, la conosco, solo mi chiedevo perchè è bastato cambiarlo solo nella pagina e non anche nell'htaccess, credevo dov'essero andare di pari passo (assoluto/assoluto rel/rel) invece, a quanto pare no!?

    Adesso però ho un problema con la pagina che visualizza i risultati di un modulo di ricerca.

    La rule visualizza l'indirizzo php
    index.php?page=search&chiave=$chiave&submit=$submit
    come
    search.html

    Il problema sorge sempre nella paginazione, perchè cambiando pagina non riconosce più le variabili, essendo il modulo in post, ho provato a mettere nell' if anche un || isset($GET["chiave"]) scrivendo tale var nel link della pagina successiva e precedente, ovviamente ho modificato anche htaccess in:
    RewriteRule ^search
    ([^/]+)-([^/]+)/page_([^/]+).html /index.php?page=$1&chiave=$2&pg=$3

    ma nulla.
    Ho provato velocemente perchè avevo un impegno, ora ritento, ma se ti salta all'occhio l'errore, lo accetto volentieri...

    Grazie per l'aiuto....

    :ciauz:


  • Super User

    non puoi mettere il link alla pagina così si riesce a ragionare un po' meglio? 😄


  • User

    Tymba scusa se non ho risposto prima....

    ho risolto aggiungendo all'if del modulo post anche la condizione get in questo modo semplicissimo:

    if(isset($_GET["chiave"])){
    $chiave = $_GET[...];
    }else{
    $chiave = $_POST[...];
    }

    nell'url:

    search_$chiave/pag_$pag.html;

    e nell'htaccess:

    RewriteRule ^search_([^/]+)/pag_([^/]+).html /index.php?chiave=$1&pg=$2

    funziona!

    Mi è venuto però un dubbio:
    prima di paginare i risultati avevo già creato le rule per le pagine pertanto ora mi ritrovo ad esempio 2 regole che fanno quasi la stessa cosa:

    RewriteRule ^sezione_([^/]+).html /index.php?sezione=$1
    e
    RewriteRule ^sezione_([^/]+)/pag_([^/]+).html /index.php?sezione=$1&pag=$2

    Il mio problema è che non vorrei che il motore di ricerca vedesse le due pagine generate "sezione_x.html" e "sezione_x/pag_1.html" come doppioni, avendo il medesimo contenuto.

    Che ne pensi?

    Devo fare un'unica regola ed aprire la pagina generale impostandola già su pag_1 ?

    uff.... avrei dovuto pensarci prima...

    Se potessi risparmiarmi questa modifica ne sarei ben lieta, ma solo se fossi certa di non rischiare l'indicizzazione di doppioni...

    A presto.

    :ciauz: [/quote]