Purtroppo sui server Coldfusion Shared Hosting di Crystaltech, non è possibile utilizzare il Mod Rewrite, quella tecnica che permette di passare informazioni alla pagina, senza parametri via get.
Una ottima spiegazione del funzionamento e su come utilizzarlo su HTML.it
Dalle ultime ricerce SEO, pare che i motori di ricerca indicizzino meglio i siti senza parametri via GET (i classici pagina.cfm?id_paramentro=valore&id_parametro=valore).
Per ovviare a questa mancanza di Crystaltech ho modificato il mio vecchio 404.cfm per farlo diventare Mrx Mod Rewrite.
Sul pannello di controllo Crystaltech è possibile configurare le pagine di errore, in base al numero dello stato del header HTTP.
Prima cosa da fare quindi inserire per l’errore 404 (file not found) la pagina "/404.cfm" che dovremo riporre nella nostra root.
Il primo 404.cfm si occupava solamente di suddividere la risposta del server Crystal
<cfdump var="#url#">
suddividendo l’indirizzo della pagina e i parametri get in 2 variabili.
La pagina poi richiamava la mia paginetta di DSN, la quale si occupava di eleborare la richiesta e in base al dominio e ai parametri, provare a verificare l’esistenza della pagina nella cartella predefinita del dominio, altrimenti inoltro alla pagina base del dominio.
Questo procedimento era stato fatto al momento in cui il porting dai vecchi server ai server di Crystal mi aveva costretto a inserire i siti all’interno di sottodirectory non corrispondenti alla precedenti. Questo sistema permetteva il reinoltro alla corrispondente pagina nella nuova posizione e l’aggiornamento degli indici dei motori di ricerca.
L’evoluzione
Eccoci qua al nuovo 404.cfm.
Obiettivo: creare un mod rewrite che analizzi la struttura delle directory (inesistenti) dopo la falsa directory "_mod".
La prima parola sarà il nome della pagina, e le seguenti rispettivamente nome parametro e valore.
Procediamo con gli step:
- catturo l’url che ha dato l’errore 404 (come vecchio 404.cfm)
- rimuovo provvisoriamente "http://" > variabile eUrlTmp
- tratto eUrlTmp come una lista, con separatore "/"
- rilevo la posizione della parola chiave "_mod" > variabile eMod
- rilevo la presenza della parola successiva a "_mod" > eMod + 1
- scansiono la rimanente lista di elementi che assegnano rispettivamente nome (eMod + 2, eMod + 4, …) e valore (eMod + 3, eMod + 5, …) alla variabile
- ricostruisco la nuova url con "http://" & dominio & path & pagina.cfm & "?" & parametri GET > variabile eUrlNew
- tramite CFHTTP richiamo eUrlNew e visualizzo cfhttp.FileContent
Risultato
Il risultato è arrivato e può essere utilizzato in qualsiasi directory e con quanti parametri si voglia.
Inoltre se verificate con www.seoconsultants.com… lo status code HTTP è 200: pagina OK!
English version – How to use mod rewrite on Crystaltech Coldfusion Shared Hosting
In Crystaltech Coldfusion Shared Hosting is impossible to use Mod Rewrite. But there is an easy solution.
First of all an example of my Mod call:
http://blog.merlinox.com/MrX/Blog/_mod/id_news/655
Please follow simple steps:
- create a file 404.cfm on root of your Crystaltech pack
- try to analyze with <cfdump> URL structure. There are:
- header info
- path info, page info and all get parameters
- (perfect!!!)
- MrX mod rewriting use a reserved word on folder path "_mod" so you can use traditional GET call or MrX Mod Rewrite call
- All path before "_mod" is real logical server path
- All path after "_mod" is false path
- "_mod" folder too doesn’t exist!!! – Now all is very easy!
- Remove domain substring "http://blog.merlinox.com)/" from complete url > "eUrlTmp" variabile and use eUrlTmp like a list with "/" delimiter
- Found position of "_mod" > "eMod" variable
- In position eMod + 1 there’s page name (you must add .cfm extension)
- Now you can start a loop to load all parameters
- In position eMod + 2 (or eMod + 4, eMod + 6, …) there’s param name
- In position eMod + 3 (or eMod + 5, eMod + 7, …) there’s param value
- Last (but not least) compose URL string with GET method:
http://blog.merlinox.com/MRX/BLOG/INDEX.cfm?ID_NEWS=654
Call it from an CFHTTP, with resolveUrl true, and CFOUTPUT it (cfhttp.fileContent)
Se trovi questo articolo su un blog diverso da “blog.merlinox.com” si tratta probabilmente di una copia non autorizzata. L’indirizzo originale di questo articolo è: CF – Crystaltech Mod Rewrite scritto da Merlinox.

si ok
)
ma cosi’ hai i log di errore del webserver pieni di errori per la pagina non trovata…. se devi farci sopra delle statistiche andra’ tutto bene?
ciao!
Rob
Purtroppo si. Però gli errori li puoi gestire con il CFERROR nel 404.cfm
All’interno del quale puoi controllare se esiste la pagina eccetera.
Sinceramente non ho trovato altre soluzioni per applicare il mod rewrite. Hai qualche idea?
al momento no
(
)
se dovesse venirmi qualcosa idea ti faccio sapere
A disposiziò cumpà!!!
Scusate, io nei 404 che vengono registrati dal componente per l’url rewrite mi trovo un sacco di
Bxh.cfm
Playskool_Toys.cfm
Printing_Press.cfm
Sapreste dirmi cosa significano?
Sinceramente no. Fai un bel DUMP di tutto e cerchiamo di capire di cosa si tratta. Magari mandamelo via mail su merlinox di gmail.
ehm… cos’è un dump?
(ho provato anche a cercare di capire ma non ho trovato info – figurademmerda ^_^)
è un tag coldfusion che permette la visualizzazione del contenuto di oggetti (semplici o complessi).
Ecco una pagina di spiegazione:
http://www.cutslink.com/psJ
Pingback: Google e ID parameter | MrX