url rewrite con htaccess

Ciao  tutti!

Spero di non uscire fuori dal tema di questo sito, spiego subito il mio problema:

Io ho sulla index dei link come questi:

-<a href="leggi_annuncia.php?categoria=Abbigliamento">ABBIGLIAMENTO</a>

-<a href="leggi_annunci.php?categoria=Abbigliamento&amp;sottocategoria=uomo">Uomo</a>

-<a href="leggi_annunci.php?categoria=Abbigliamento&amp;sottocategoria=donna">Donna</a>

ecc...

che vorrei trasformare in

-annunci/abbigliamento.htm

.annunci/abbigliamento/uomo.htm

-annunci/abbigliamento/donna.htm

Ho letto che si puo fare tramire il file htaccess presente sul server(io uso altervista) ma non ci ho capito un gran che

Qualcuno potrebbe spiegarmi meglio??

Grazie! :bye: :bye:

inviato 6 anni fa
gianluca80
X 0 X

Puoi sfruttare il mod_rewrite.

Senza che ti do la soluzione immediata al tuo problema ti chiedo di documentarti su questi link:

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

http://www.giorgiotave.it/wikigt/os/Guida_mod_rewrite

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Grazie Marios

utile e stimolante come sempre ;)

 :bye: :bye:

risposto 6 anni fa
gianluca80
X 0 X

Se non ho capito malòe dovrebbe funzionare cosi:

-Io nella index ho un url: <a href="leggi_annuncia.php?categoria=abbigliamento">

-La vorrei trasformare in: annunci/abbigliamento.html

- scrivo questa istruzione,preceduta da 'RewriteEngine On' nell htaccess: RewriteRule ^annunci/([^/]+).html leggi_annuncia.php?categoria=$1 [L]

Fin qui dovrei esserci...forse... :-\

poi se non ho capito male dovrei cambiare l indirizzo presente nella index con il nuovo indirizzo....ma se io lo cambio come faccio ad avere la variabile via get nel url???

Ho fatto varie prove ma non ho trovato soluzione  :buck:

Mi puoi dare una mano??

Grazie :bye: :bye:

risposto 6 anni fa
gianluca80
X 0 X

Allora devi stare attento e capire bene il funzionamento del mod_rewrite.

Il funzionamento che hai illustrato è giusto.

Se hai più variabili via GET da passare o lo fai implementando altre istruzioni (cioè altre RewriteRule).

Comunque il vecchio url dovrebbe funzionare correttamente.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

bhè se ho capito bene ed  ho fatto giusto penso ci sia un problema sulla configurazione di apache nel file http...

io ho deccommentato la linea di istruzione:

- LoadModule rewrite_module modules/mod_rewrite.so

poi ho fatto questi cambiamenti:

<Directory />

    Options FollowSymLinks

    AllowOverride none

    Order deny,allow

    Deny from all

</Directory>

In:

<Directory />

    Options FollowSymLinks

    AllowOverride all

    Order deny,allow

    Deny from all

</Directory>

E:

<Directory "C:/Apache Software Foundation/Apache2.2/cgi-bin">

    AllowOverride none

    Options None

    Order allow,deny

    Allow from all

</Directory>

In:

<Directory "C:/Apache Software Foundation/Apache2.2/cgi-bin">

    AllowOverride all

    Options None

    Order allow,deny

    Allow from all

</Directory>

L' Apache è la versione 2.2.11

Grazie MarioS.

 :bye: :bye:

risposto 6 anni fa
gianluca80
modificato 6 anni fa
X 0 X

Non ho capito.

Hai difficoltà nella configurazione del tuo server per attivare il mod_rewrite?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Anche....ho provato a guardare in giro ma ci sono tante soluzioni per farlo ed io questa riga:

-per Apache2 a2enmod rewrite come root

presente nella guida di giorgio trave non l ho capita ed ho trovato un altra guida che mi diceva di fare come ti ho mostrato nel mex precedente.

Grazie  :bye: :bye:

risposto 6 anni fa
gianluca80
X 0 X

Ok, allora non uso server windows per cui non so aiutarti facilmente.

Riporta la configurazione allo stato iniziale, cancella le modifiche che hai fatto ok?

Avvi uno script phpinfo e controlla se al suo interno il mod_rewrite di apache è attivo. In tal caso devi attivarlo. Immagino che nel file di configurazione di apache debba esserci una stringa commentata con all'interno una indicazione per caricare un modulo dal nome simile mod_rewrite. Lo deccomenti, riavvi apache e vedi se il modulo è caricato dalla solita pagina di phpinfo (devi aggiornarla ovviamente).

Da li vai nella tua cartella e inserisci un htaccess e fai alcune prove iniziali per vedere se funziona ok?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ciao MarioS scusa ma ero in trasferta e non avevo sto pc....

Ho fatto come hai detto tu....o riportato la configurazione di httpd come era prima, ho spuntato solo la riga che mi hai detto, ho un risultato del genere:

#LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule setenvif_module modules/mod_setenvif.so

e nella pagina info mi dice che è attiva la funzione mod_rewrite...quindi in teoria è attiva!

Ho preso un semplicissimo esempio da internet:

ho creato un link nella index cosi:

- <a href="http://localhost/annunciamonline_web/pippo.html"> Ce la Farò? </a>

e nel .htaccess ho scritto cosi:

RewriteEngine on

RewriteRule ^pippo\.html$ pluto.html

ovviamente mi vede a pagina ma l indirizzo rimane pippo.html non pluto.html

risposto 6 anni fa
gianluca80
modificato 6 anni fa
X 0 X

Ciao MarioS scusa ma ero in trasferta e non avevo sto pc....

Ho fatto come hai detto tu....o riportato la configurazione di httpd come era prima, ho spuntato solo la riga che mi hai detto, ho un risultato del genere:

#LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule setenvif_module modules/mod_setenvif.so

e nella pagina info mi dice che è attiva la funzione mod_rewrite...quindi in teoria è attiva!

Ho preso un semplicissimo esempio da internet:

ho creato un link nella index cosi:

- <a href="http://localhost/annunciamonline_web/pippo.html"> Ce la Farò? </a>

e nel .htaccess ho scritto cosi:

RewriteEngine on

RewriteRule ^pippo\.html$ pluto.html

ovviamente mi vede la pagina ma l indirizzo rimane pippo.html non pluto.html

htaccess la pagina index e la pagina pippo.html sono nella stessa cartella

Grazie  :bye:

risposto 6 anni fa
gianluca80
X 0 X

Cioè tu chiami pippo.html e ti fa vedere il contenuto di pluto.html giusto?

Il comportamento è corretto, la barra degli indirizzi non deve cambiare niente.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

no io la chiamo pippo.html e mi fa vedere il contenuto di pippo.html

risposto 6 anni fa
gianluca80
X 0 X

Il file pippo.html non deve esistere!!!

Una volta eliminato controlla che venga eseguito correttamente, se ci sono problemi prova ad introdurre la direttiva rewritebase nel tuo htaccess.

Se anche li non funziona prova ad indicare la path completa nella tua regola e cioè:

RewriteRule /annunciamonline_web/pippo\.html$ /annunciamonline_web/pluto.html

La guida che ti avevo indicato comunque contiene un archivio che ti permette di verificare l'effettivo funzionamento del mod_rewrite.

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