mod_rewrite url

Ciao a tutti cari amici del forum.

Ho questo esigenza: URL corrente http://www.miosito.it/catalogo.php?l=it&stile=prova

Come posso far diventare il nuovo url http://www.miosito.it/it/cataologo/prova.html

e se cambio lingua farlo diventare: http://www.miosito.it/en/catalog/test.html ?

Qualcuno mi sa consigliare?

Grazie in anticipo.

 :bye:

inviato 6 anni fa
Marco Dario
X 0 X

Prova con una cosa tipo questa:

RewriteEngine on
RewriteRule ^([^/]+)/catalogo/([^/]+)\.html$ catalogo.php?l=$1&stile=$2 [L]

Attento che forse devi inserire il rewritebase.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Domani provo e ti so dire!

Grazie mille in anticipo! Ma Gianni che fine ha fatto?

 :bye:

risposto 6 anni fa
Marco Dario
X 0 X
Ma Gianni che fine ha fatto?

Non ti so dire, so che è molto impegnato per lavoro, è da qualche settimana che comunque non risponde neppure a me.

Non so proprio dirti.

Ciao

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Niente non mi funziona... ho provato a fare una cosa semplice come index.php?lang=it ma niente. mi da errore 404.

Presumo che il mod_rewrite funzioni in quanto se lancio phpinfo() alla voce Loaded modules c'è mod_rewrite.

Consigli?

Ciao!  :bye:

risposto 6 anni fa
Marco Dario
X 0 X

1) Dal log di apache riesci ad estrarre qualche info in più sull'errore 404?

2) puoi dirci l'url che hai usato nel tuo browser con le regole che ti ho indicato? Ne hai aggiunte altre?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ciao MarioS

Allora adesso non ricevo più 404 perche mi sono spostato sulla cartella principale di Apache.

Però mi compare pagina bianca.

questo è il mio file .htaccess

RewriteEngine on
RewriteRule ^([^/]+)/test/([^/]+)\.html$ test.php?pippo=$1 [L]

Questa è la pagina test.php

<?php
   echo $_GET['pippo'];
?>

La mia richiesta è: http://localhost/test/ciao.html. Nella pagina dovrebbe essere visualizzata la scritta ciao giusto? Invece non risulta nulla.

 :bye:

risposto 6 anni fa
Marco Dario
X 0 X

No, ti dovrebbe funzionare in questo modo:

RewriteEngine on
RewriteRule ^([^/]+)\.html$ test/test.php?pippo=$1 [L]
risposto 6 anni fa
Mario Santagiuliana
modificato 6 anni fa
X 0 X

Nada! stessa identica cosa... Pagina bianca!  :wallbash:

Tieni presente che il file test.php è nella directory principale del server.

 :bye:

risposto 6 anni fa
Marco Dario
modificato 6 anni fa
X 0 X

Ok, prova così:

RewriteEngine on
RewriteRule ^test/([^/]+)\.html$ test.php?pippo=$1 [L]

o così:

RewriteEngine on
RewriteRule ^([^/]+)\.html$ test.php?pippo=$1 [L]

Pagina bianca...prova anche a sostituire $1 con una variabile fissa.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Grandissimo! Risolto grazie mille!

 :bye:

risposto 6 anni fa
Marco Dario
X 0 X

Riapro questa discussione in quanto c'è tutto lo storico dietro.

Ho creato il mod_rewrite per modificare gli url e tutto funziona. Ecco l'esempio

RewriteRule ^it$ index.php?lang=it [L]
RewriteRule ^en$ index.php?lang=en [L]

Lanciando l'indirizzo http://www.miodominio.it/it mi rimanda a index.php con il get settato a it.

Però se faccio http://www.miodominio.it/it/ (con una slash in più) non funziona. La mia domanda il modo in cui ho scritto la regola è giusto? Ho problemi con i motori di ricerca? Sarebbe meglio che funzionasse in tutte e due i modi? Se si cosa devo fare?

Ciao e grazie

 :bye:

risposto 6 anni fa
Marco Dario
X 0 X

Il $ indica il fine stringa. Se dopo it c'è qualcosa d'altro il fine stringa è il qualcosaltro, non l'it della regola che hai dato.

Puoi o creare una nuova regola in più oppure usare un'altra regex.

Con i motori di ricerca non hai problemi, il tutto dipende dai link che pubblichi e dai collegamenti che esistono sul web.

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda