Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Seo e Tecnologie > Mod Rewrite e Tecniche di URL Redirect
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti

Mod Rewrite e Tecniche di URL Redirect La riscrittura delle URL e i reindirizzamenti

Hey Amico Visitatore,
Condividi con noi le tue idee e la tua conoscenza Aprendo una nuova discussione nella sezione Mod Rewrite e Tecniche di URL Redirect


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 04-07-08, 01:46   #1 (permalink)
User
 
L'avatar di zumbo
 
Data di registrazione: Jan 2007
Messaggi: 102
[MOD_RW] come ottenere un indirizzo valido sia con lo slash che senza

Buonasera a tutti. Mi sono imbattuto oggi in un problema che sembra una banalità, ma per il quale alla fine non ho trovato soluzione e sono certo che anche voi ci sarete imbattuti.

Dunque, la questione è semplicissima.

Se io creo un indirizzo virtuale del tipo:

miodominio.it/ciao/pasta-con-il-pomodoro/

è ovvio che se un utente lo digita a mano senza lo slash finale

miodominio.it/ciao/pasta-con-il-pomodoro

debba finire lo stesso su quella pagina o quanto meno debba essere indirizzato tipo con un 302 sull'indirizzo con lo slash.


Per quanto riguarda la gestione del "doposlash" ho deciso di passare tutto in un'unica variabile che si chiama "address".

di modo che ad esempio l'indirizzo di cui sopra diventa

index.php?address=ciao/pasta-con-il-pomodoro/

per fare questo ho usato questa semplice regola


Codice:
RewriteRule ^(.*)/$ index.php?address=$1
e funziona perfettamente.

Ovviamente questa implicherebbe l'obbligo dello slash finale.


Ragione direbbe che la cosa è risolvibilissima aggiungendo un semplice asterisco dopo lo slash in modo da rendere l'ultimo slash "facoltativo" ai fini del match, una cosa del tipo:

Codice:
RewriteRule ^(.*)/*$ index.php?address=$1
E infatti anche questo codice funziona benissimo.......

....c'è solo un problema però:

al posto di passarmi come variabile address tutti quello che c'è dopo lo slash, il valore della variabile address è "index.php" !!!!!!

ovvero la variabile address non cambia mai rendendo quindi inutile la riscrittura...


Qualcuno di voi saprebbe per caso dirmi come mai?


Nel caso non immaginiamo una soluzione a questo, mi chiedo, c'è un modo per redirezionare indistintamente tramite htaccess tutti gli indirizzi che non hanno lo slash finale verso indirizzi che ce l'abbiano?

Vi prego, veniamo di venirne a capo...è proprio una questione di orgoglio, come mai a volte noi sviluppatori siamo messi dinanzi a problemi all'apparenza così banali, ma a volte cosi apparentemente irrisolvibili?

Grazie, per aver letto fin qui



vi aspetto numerosiiii
__________________
nuevo advertising

Ultima modifica di zumbo : 04-07-08 01:49.
zumbo non in linea   Rispondi citando
Vecchio 04-07-08, 17:21   #2 (permalink)
User
 
L'avatar di liberoguerra
 
Data di registrazione: Apr 2008
Ubicazione: L'Aquila
Messaggi: 85
Invia un messaggio tramite MSN a liberoguerra Invia un messaggio tramite Skype a liberoguerra
Ciao zumbo,
io farei così (è la prima cosa che mi viene in mente)

Quote:
RewriteRule ^(.*)$ http\://miodominio.it/$1 [R=301,L]
RewriteRule ^(.*)/$ index.php?address=$1 [L]
Provala perchè io non ho avuto tempo di testarla, comunque il concetto è questo:

Trasformi prima il path senza slash finale, aggiungendone uno. Poi traduco il path con lo slash finale in index.php?adress=ecc...

Spero di aver risposto alla tua domanda ! Altrimenti ci chiariamo meglio.

Ciauzz
__________________
seo webtool
liberoguerra non in linea   Rispondi citando
Vecchio 05-07-08, 00:08   #3 (permalink)
User
 
L'avatar di zumbo
 
Data di registrazione: Jan 2007
Messaggi: 102
Quote:
liberoguerra Visualizza il messaggio
Ciao zumbo,
io farei così (è la prima cosa che mi viene in mente)

Provala perchè io non ho avuto tempo di testarla, comunque il concetto è questo:

Trasformi prima il path senza slash finale, aggiungendone uno. Poi traduco il path con lo slash finale in index.php?adress=ecc...

Spero di aver risposto alla tua domanda ! Altrimenti ci chiariamo meglio.

Ciauzz

Trovo la tua una soluzione molto acuta, anche se purtroppo non funziona.

In effetti però bisognerebbe almeno stabilire se l'indirizzo ha lo slash oppure no, prima di aggiungerlo.

In ogni caso non funziona, il redirect va in loop ed il browser da errore.

Ho provato ad integrare alcune modifiche alla tua idea...ma ancora niente.
Chissà.
__________________
nuevo advertising
zumbo non in linea   Rispondi citando
Vecchio 05-07-08, 01:19   #4 (permalink)
User
 
L'avatar di zumbo
 
Data di registrazione: Jan 2007
Messaggi: 102
[risolto]

Ho trovato un interessante articolo ad hoc (mydigitallife.info/2007/03/19/add-trailing-slash-to-the-end-of-the-url-with-htaccess-rewrite-rules/)

La soluzione è simile alla tua ma un po più complessa:

Codice:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) wwwsitocom/$1/ [R=301,L]
funziona
__________________
nuevo advertising
zumbo non in linea   Rispondi citando
Vecchio 05-07-08, 01:21   #5 (permalink)
User
 
L'avatar di liberoguerra
 
Data di registrazione: Apr 2008
Ubicazione: L'Aquila
Messaggi: 85
Invia un messaggio tramite MSN a liberoguerra Invia un messaggio tramite Skype a liberoguerra
Allora ho modificato un pò le regole.

Prova con queste...dovrebbero funzionare

Quote:
RewriteRule ^(((.+)/)*([^/]+))$ http\://miodominio.it/$1/ [R=301,L]
RewriteRule ^(.*)/$ http\://miodominio.it/index.php?address=$1/ [R,L]
Fammi sapere

A presto
__________________
seo webtool
liberoguerra non in linea   Rispondi citando
Vecchio 05-07-08, 01:23   #6 (permalink)
User
 
L'avatar di liberoguerra
 
Data di registrazione: Apr 2008
Ubicazione: L'Aquila
Messaggi: 85
Invia un messaggio tramite MSN a liberoguerra Invia un messaggio tramite Skype a liberoguerra
Oooppss,
hai trovato la soluzione 2 minuti prima che riuscissi a scrivere le mie regole.
__________________
seo webtool
liberoguerra non in linea   Rispondi citando
Vecchio 05-07-08, 01:40   #7 (permalink)
User
 
L'avatar di zumbo
 
Data di registrazione: Jan 2007
Messaggi: 102
Quote:
liberoguerra Visualizza il messaggio
Oooppss,
hai trovato la soluzione 2 minuti prima che riuscissi a scrivere le mie regole.

wow...chissà se le tue funzionano ora...per caso le hai provate?
__________________
nuevo advertising
zumbo non in linea   Rispondi citando
Vecchio 05-07-08, 01:46   #8 (permalink)
User
 
L'avatar di liberoguerra
 
Data di registrazione: Apr 2008
Ubicazione: L'Aquila
Messaggi: 85
Invia un messaggio tramite MSN a liberoguerra Invia un messaggio tramite Skype a liberoguerra
Si le ho provate...e sul mio server funzionano! Provale un pò.... un attimo solo però..

Ho riprovato le regole adesso con altri parametri e mi crea alcuni problemi.
Vediamo se riesco a mettere tutto a posto.
__________________
seo webtool

Ultima modifica di liberoguerra : 05-07-08 01:59.
liberoguerra non in linea   Rispondi citando
Vecchio 05-07-08, 04:06   #9 (permalink)
User
 
L'avatar di liberoguerra
 
Data di registrazione: Apr 2008
Ubicazione: L'Aquila
Messaggi: 85
Invia un messaggio tramite MSN a liberoguerra Invia un messaggio tramite Skype a liberoguerra
Finalmente ci sono riuscito ad eliminare il loop che il tuo problema logicamente creava.

Le regole sono le seguenti

Quote:
RewriteEngine On
RewriteRule ^(.+)\.(.+)$ - [S=2,S=3,L]
RewriteRule ^((([^/]+)/)+)$ http\://miosito.it/index3.php?address=$1 [L]
RewriteRule ^([^/]+/)*([^/]+)$ http\://miosito.it/$1$2/ [R=301,L]


Esempi fatti per capire il funzionamento di tali regole.


Richieste http: (la freccia "->" indica i passaggi di trasformazione che avvengono con le regole sopra citate)

Quote:
http\://miosito.it -> http:\//miosito.it
Quote:
http\://miosito.it/ciao.php -> http\://miosito.it/ciao.php
Quote:
http\://miosito.it/../../ciao.php -> http\://miosito.it/../../ciao.php (profondità directory arbitraria)
Quote:
http\://miosito.it/ciao -> http\://miosito.it/ciao/ ->
Quote:
http\://miosito.it/index.php?address=ciao/
Quote:
http\://miosito.it/../../ciao -> http\://miosito.it/../../ciao/ -> http\://miosito.it/index.php?address=../../ciao/ (profondità directory arbitraria)
Ora sono sicuro che funziona

Spero di averti aiutato comunque.

Ciao ciao
__________________
seo webtool
liberoguerra non in linea   Rispondi citando
Rispondi


Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 18:57.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.