- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- Problema colla riscrittura degli URL (mod_rewrite)
-
Problema colla riscrittura degli URL (mod_rewrite)
Salve a tutti!
Sto scrivendo un sito che fa grande uso della riscrittura degli url.
In pratica nel mio .htaccess ho roba del tipo:
RewriteRule ^[A-Za-z0-9_-]{3,24}/album/[0-9]{4,8}/[0-9]{1,3}$ album.inc.php?utente=$1&id=$2&p=$3Che mi regge URL del tipo
/utente/album/14745/7
album.inc.php?utente=utente&id=14745&p=7E questo funziona.
Però, all'inzio dello stesso file .htaccess ho qualcosa di molto più semplice:RewriteRule ^registrati$ registrati.inc.php
Ora, visitando l'indirizzo
/registrati, quel che ottengo è un bel 404
"The requested URL /registrati was not found on this server."Quindi come se cercasse il file /registrati che, appunto, non esiste.
Mi ignora quella riga? O è strutturata male? Vi prego la cosa mi fa impazzire.Ah, e la stessa riga del tipo:
RewriteRule ^login$ login.inc.php
Invece funziona. Cioè mi da il 404, ma non trova "login.inc.php", quindi il mod_rewrite funziona.Grazie in anticipo per le eventuali risposte
-
Ciao TuxSoul,
occorrerebbe sapere se vi sono altre regole oltre le tre da te riportate.
la regola del "registrati" è immediatamente successiva o precedente alla regola login?
-
Salve a tutti, io ho più o meno lo stesso problema, la prima regola chiamata funziona, la successiva (che è identica) no!!
il mio .htaccess è il seguente
RewriteEngine on
RewriteRule ^([0-9]+)-([^/]+).html$ lista_categorie.php?cta_codice_categoria=$1
RewriteRule ^([0-9]+)-([^/]+).html$ sottocategorie.php?pippo=$1in verità la variabile "pippo" sarebbe sempre "cta_codice_categoria",
Il mio dubbio è se non funziona perchè la seconda pagina chiamata "sottocategorie.php" avviene all'interno di lista_categorie.php
Spero di essere stata abbastanza chiara è da due settimane che cerco di documentarmi sul rewriterule....
Grazie in anticipo!!
-
@jo17 said:
Salve a tutti, io ho più o meno lo stesso problema, la prima regola chiamata funziona, la successiva (che è identica) no!!
il mio .htaccess è il seguente
RewriteEngine on
RewriteRule ^([0-9]+)-([^/]+).html$ lista_categorie.php?cta_codice_categoria=$1
RewriteRule ^([0-9]+)-([^/]+).html$ sottocategorie.php?pippo=$1E' la stessa regola e dunque non può riscrivere in due modi diversi.
-
Si avevo avuto il sospetto.. però fondamentalmente deve fare la stessa cosa solo che chiama due pagine diverse... come si dovrebbe gestire dunque? Io ho anche provato togliendo la parte ([0-9]+) e passandogli solo una variabile...e suppongo che valga poco questa modifica perchè continuoa a darmi pagina non trovata..
Ti ringrazio tantissimo per la risposta!!
-
Metti un qualcosa nella regola che le distingue. Per esempio:
RewriteEngine on RewriteRule ^([0-9]+)-codcat([^/]+)\.html$ lista_categorie.php?cta_codice_categoria=$1 RewriteRule ^([0-9]+)-sottocat([^/]+)\.html$ sottocategorie.php?pippo=$1
-
Uhmm... anche con queste modifiche mi da sempre errore 404 di pagina non trovata. Eppure dovrebbe essere così lineare!!
-
Errore 404 vuol dire due cose:
- Fa il redirect ma la pagina php non esiste
- La pagina html è diversa da quella definita nelle regole
-
Allora ho fatto un piccolo passo avanti... ho modificato htaccess in questo modo:
RewriteEngine on
RewriteRule ^([0-9]+)-codcat([^/]+).html$ lista_categorie.php?cta_codice_categoria=$1
RewriteRule ([0-9]+)-B.html$ sottocategorie.php?pippo=$1
in pratica ho tolto il simbolo ^ quando richiamo sottocategorie.php
Ora è giunto un altro problema... viene passata sempre la prima variabile selezionata.
Mi spiego meglio se alla prima chiamata di lista_categorie.php viene passata la variabile 01 anche quando richiamo sottocategorie.php passa sempre 01! Anche se sul link viene scritta la variabile giusta es miosito/SH01.html....
-
Non ho capito bene. Puoi farmi un esempio?
-
Ciao e grazie per la pasienza!
Il tutto è strutturato in questo modo:
dalla home page vado, tramite un menù generale, alle varie liste categorie, e qui faccio il primo revriterule, quindi ho il mio indirizzo convertito nel seguente modo:
miosito/01-codcatIncubatrici.html
dove 01 è il codice della categoria e incubatrici la descrizioneAll'interno di questa pagina c'è un elenco di sotto categorie e anche qui voglio la conversione dell'indirizzo, che fa correttamente in questo modo: miosito/H01-B.html dove H01 è il codice della sottocategoria da chiamare.
Se faccio un echo della query presente in questa pagina mi accorgo che passa sempre e comunque la variabile 01!Naturalmente la variabile passata per la query in get è pippo...
Da premettere che sono sul mio server in locale..
Ti ringrazio ancora!
-
Credo di aver capito. Prova così:
RewriteEngine on RewriteRule ^([0-9]+)-codcat([^/]+)\.html$ lista_categorie.php?cta_codice_categoria=$1 RewriteRule ^(.*)-B.html$ sottocategorie.php?pippo=$1
[0-9] vuol dire solo numeri.
-
SIII!!! HAI RAGIONE!!!
Giustamente gli dicevo di passare solo i numeri ed essendo una sottocategoria di 01, non capico che mi escludeva il carattere alfabetico!!!!
Ti ringrazio tantissimo per l'aiuto e per la pasienza!!!!
-
@jo17 said:
SIII!!! HAI RAGIONE!!!
Giustamente gli dicevo di passare solo i numeri ed essendo una sottocategoria di 01, non capico che mi escludeva il carattere alfabetico!!!!
Ti ringrazio tantissimo per l'aiuto e per la pasienza!!!!Figurati. A volte chi non risponde o non risponde in modo tale da risolvere il problema dipende solo dal fatto di non capire la reale esigenza o il problema.