[Spip-it] Un albero completo per gli url

From : diego.weisz@... , the 29th March 2006 18:32
  • 2006-03-29 18:32:19 — diego.weisz@... - [Spip-it] Un albero completo per gli url

Ciao a tutti, Vi sottopongo un ultima questione sugli url. Alla ricerca di un contrib per creare degli url completi ho trovato questo (allego la traduzione in fondo al messaggio) che ho chiesto a una mia amica di tradurre (Fausto se vuoi puoi mettere la traduzione su Spip-contrib). L'ho testato ma non funziona. O meglio, lo script che produce l'Url funziona bene ma l'htaccess no e quindi il browser non trova la pagina richiesta. Qualcuno può testarlo o , comunque, scoprire cosa c'è che non va? Il problema potrebbe essere legato al fatto che il contrib è vecchio e quindi magari qualcosa non è più compatibile con  Le nuove versioni di Spip, però mi sembra potrebbe essere utile per tutti, no? Ciao Diego P.s. L'indirizzo del contrib originale da cui scaricare i files è:  http://www.spip-contrib.net/Une-arborescence-virtuelle-dans-l   Un' arborescenza virtuale nell'URL 24 giugno 2003 Nicolas Hoizey  Difficile far conoscere le pagine del vostro sito dando quegli URL astrusi utilizzati in modo innato da SPIP. Ecco come rendere tutto molto più immediato/gradevole agli occhi...   Ne avevo abbastanza di dare ai miei utenti di phpMyChat un URL di questo tipo: http://www.phpheaven.net/rubrique.php3?id_rubrique=14 Quindi ho guardato cos'era fattibile con la gestione dell' URL di SPIP, e ispirandomi ai contributi di Fil [1] e Dan Hetzel [2], adesso posso fornir loro un URL molto più semplice : http://www.phpheaven.net/projects/phpmychat/rubrique14.html E posso anche andare oltre per una rubrica, con un URL ancora più semplice : http://www.phpheaven.net/projects/phpmychat/ Un vantaggio in più è che questo tipo di URL è comunque raccomandato per facilitare la codificazione di un sito [3]. Come funziona ? Vediamo subito come creare questi tipi di URL La creazione degli URL utilizzati da SPIP attraverso i tags #URL_ARTICLE o #URL_RUBRIQUE si configura attraverso lo script inc-urls.php3. Per phpHeaven, ho dato a questi URL il nome friendly. Ho poi creato un file inc-urls-friendly.php3, che potete scaricare qui sotto:   inc-urls-friendly.php3 Le script de génération des URL Poi ho fatto riferimento a questo script in inc-urls.php3 con la seguente linea : $type_urls = 'friendly'; Vediamo un po' cosa fa questo script :   Una prima funzione nominata text2sys trasforma tutta la catena di caratteri in una catena più semplice, senza caratteri speciali, accenti, né spazi. Così, Chronique d'une licence non annoncée [4] diventa chronique_d_une_licence_non_annoncee. Questa funzione utilizza le capacità di translitterazione di SPIP 1.6, ciò che dovrebbe permettergli di essere utilizzato anche per tutte le lingue.    una seconda funzione chiamata arborescenza crea ricorrentemente l'arborescenza virtuale della rubrica corrispondente all'identificativo passato in parametro, trasformando tutti i nomi di rubriche attraverso la funzione text2sys   Per finire, le funzioni classiche di creazione dell'URL che saranno chiamate per SPIP si appoggiano su arborescenza per creare gli URL completi. Occupiamoci adesso del trattamento di questi URL Nella configurazione di Apache (.htaccess ou httpd.conf) : RewriteEngine On # Pas de reecriture pour certaines ressources RewriteRule \.(gif|jpg|png|css|php|php3) - [NC,L] RewriteRule ^(ecrire|IMG|NAVPICS|oo)/ - [NC,L] # Gerer les URLs SPIP RewriteRule ^.*(article|rubrique|breve|auteur|mot|forum)(.*).html$ /$1.php3?id_$1=$2 [QSA,L] RewriteRule ^(.*)site(.*).html$ $1site.php3?id_syndic=$2 [QSA,L] # Gerer les URL inconnues RewriteRule ^(.+/.*)$ guess.php3?url=$1 [QSA,L] Innanzitutto si indica di non trasformare gli URL che corrispondono a delle risorse accessibili, come ad esempio le immagini, i fogli di stile o semplicemente gli script PHP. Allo stesso modo, si indica di non trasformare gli URL corrispondenti a degli elementi che non si trovano alla radice del sito.  Poi si tratta i casi generali degli URL che contengono uno dei seguenti termini:   article  ARTICOLO   rubrique  RUBRICA/CRONACA   breve  BREVE   auteur  AUTORE   mot  PAROLA/TERMINE   forum FORUM Si sostituisce quindi tutti gli URL ...tiziocaiosempronio_rubrique14.html con /rubrique.php3?id_rubrique=14. Noterete che bisogna trattare il caso a parte se  l' identificativo di un sito dei sindacati (syndiqué) è scritto id_syndic e non id_site.. Per trattarlo contemporaneamente même temps, l'alterntiva sarà rinominare i files site.php3 e site-dist.html in syndic.php3 et syndic-dist.html e tenerne conto nella creazione degli URL. E questo guess.php3 allora ??? Come abbiamo visto, è possibile per le rubriche utilizzare degli URL semplificati come questi : http://www.phpheaven.net/projects/phpmychat/ Essendo gli elementi normalmente identificati dalla presenza  alla fine dell'URL di una parte come rubrique14.html, bisognerà trovare un mezzo per riconoscere a quale rubrica suddetto URL fa riferimento.  L'idea è stata quella di creare un script che cerchi tra i casi possibili se uno corrisponde all'indirizzo richiesto.  Ecco lo script da scaricare :   guess.php3 Script di riconoscimento dell'URL Questo script che è quindi utilizzato nel caso in cui l'URL non ha potuto essere riconosciuto percorre l'insieme delle rubriche di SPIP tentando di riconoscerci l'URL richiesto. In caso di successo, l'internauta viene diretto verso l'URL completo, e in caso di fallimento viene diretto verso l'home page del sito. Ben inteso che sarà possibile generare piuttosto un errore 404 [5] per indicare la non disponibilità della pagina richiesta.  Aaaah, non visualizzo più le immagini ! Niente panico, sono solamente gli URL relativi all'interno delle pagine HTML che non sono più valide. Con gli URL classici di SPIP, non c'è la directory negli'URL corrispondente alla radice del sito, quindi basta codificare le immagini, i fogli di stile, le risorse JavaScript, etc. in relativo, con unicamente il nome del file se è in questa stessa radice.  Quando un navigatore riceve una pagine come : http://www.phpheaven.net/projects/phpmychat/rubrique14.html, se il codice  HTML contiene , domanderà semplicemente al server il file http://www.phpheaven.net/projects/phpmychat/puce.gif, che a priori non esiste.  Bisogna quindi utilizzare degli URL assoluti (i-e completi) per fare riferimento agli elementi esterni, per esempio qui , o aggiungere l'  nell'intestazione HTML. Questo problema non sussiste per i documenti e le imamgini contenuti negli articoli essendo i loro URL generati da inc-urls-friendly.php3, ma invece esiste  per le vignette per le quali questo codice non è utilizzato.  [1] Urls [2] La réécriture des URL "à la volée" [3] Vedere a questo proposito il punto numero 7 di ce message di neoram nella lista spip-dev [4] Vedere su phpHeaven : http://www.phpheaven.net/article88.html [5] Vedere  404 Research Lab