- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- Rewrite Rule
-
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...
-
prova a creare link assoluti e non relativi.
quindi del tipo:
xttp://www.tuosito.it/sezione etc etc etc
-
@Tymba said:
prova a creare link assoluti e non relativi.
quindi del tipo:
xttp://www.tuosito.it/sezione etc etc etcOkay, 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:
-
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.htmingarbugliato 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.
-
@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.htmingarbugliato 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.
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.htmlIl 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=$3ma 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....
-
non puoi mettere il link alla pagina così si riesce a ragionare un po' meglio?
-
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=$2Il 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.
[/quote]