CF – Crystaltech Mod Rewrite

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:

  1. catturo l’url che ha dato l’errore 404 (come vecchio 404.cfm)
  2. rimuovo provvisoriamente "http://" > variabile eUrlTmp
  3. tratto eUrlTmp come una lista, con separatore "/"
  4. rilevo la posizione della parola chiave "_mod" > variabile eMod
  5. rilevo la presenza della parola successiva a "_mod" > eMod + 1
  6. scansiono la rimanente lista di elementi che assegnano rispettivamente nome (eMod + 2, eMod + 4, …) e valore (eMod + 3, eMod + 5, …) alla variabile
  7. ricostruisco la nuova url con "http://" & dominio & path & pagina.cfm & "?" & parametri GET > variabile eUrlNew
  8. 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:

https://blog.merlinox.com/MrX/Blog/_mod/id_news/655

 

Please follow simple steps:

  1. create a file 404.cfm on root of your Crystaltech pack
  2. try to analyze with <cfdump> URL structure. There are:
    • header info
    • path info, page info and all get parameters
    • (perfect!!!)
  3. MrX mod rewriting use a reserved word on folder path "_mod" so you can use traditional GET call or MrX Mod Rewrite call 🙂
  4. All path before "_mod" is real logical server path
  5. All path after "_mod" is false path
  6. "_mod" folder too doesn’t exist!!! – Now all is very easy!
  7. Remove domain substring "https://blog.merlinox.com)/" from complete url > "eUrlTmp" variabile and use eUrlTmp like a list with "/" delimiter
  8. Found position of "_mod" > "eMod" variable
  9. In position eMod + 1 there’s page name (you must add .cfm extension)
  10. 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
  11. Last (but not least) compose URL string with GET method:
    https://blog.merlinox.com/MRX/BLOG/INDEX.cfm?ID_NEWS=654
    Call it from an CFHTTP, with resolveUrl true, and CFOUTPUT it (cfhttp.fileContent)

Loading Facebook Comments ...

10 pensieri su “CF – Crystaltech Mod Rewrite

  1. Roberto

    si ok :o)
    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

    Rispondi
  2. Merlinox

    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?

    Rispondi
  3. Luca

    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

    Rispondi
  4. Pingback: Google e ID parameter | MrX

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *