![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
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. |
||||
|
|||||||||
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 |
|
|
LinkBack | Strumenti di discussione |
|
|
#1 (permalink) |
|
User
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 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 ....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 ![]() |
|
Ultima modifica di zumbo : 04-07-08 01:49. |
|
|
|
|
|
|
|
|
#2 (permalink) | |
|
User
|
Ciao zumbo,
io farei così (è la prima cosa che mi viene in mente) Quote:
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 | |
|
|
|
|
|
#3 (permalink) | |
|
User
Data di registrazione: Jan 2007
Messaggi: 102
|
Quote:
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à. | |
|
|
|
|
|
#4 (permalink) |
|
User
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]
![]() |
|
|
|
|
|
#9 (permalink) | |||||||
|
User
|
Finalmente ci sono riuscito ad eliminare il loop che il tuo problema logicamente creava.
Le regole sono le seguenti Quote:
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:
Quote:
Quote:
Quote:
Quote:
Quote:
![]() Spero di averti aiutato comunque. Ciao ciao | |||||||
|
|
|