mercoledì 16 gennaio 2019

Redirect 301 (Permanent) attraverso web.config

L'operazione di redirect può essere necessaria quando si cambia il nome del dominio per varie necessità ma non si vuole perdere il rank dei motori di ricerca. 
Si lasciano i contenuti del vecchio sito (circa tre mesi), se ne costruisce una copia con il nuovo dominio ed ogni pagina del vecchio sito viene reindirizzata al nuovo avendo cura di indicare la direttiva "permanent" (ovvero 301).
Quando i crawler dei motori di ricerca individuano le pagine del vecchio sito troveranno che la pagina punta ad un nuovo dominio e "impareranno" che ora i contenuti sono altrove (cioè nel nuovo sito).
Se il sito è costituito da poche pagine non sarà difficile inserire nella sezione head della pagina le direttive necessarie al re indirizzamento ma se le pagine sono alcune decine il lavoro si fa noioso... se poi il sito non è costituito da pagine statiche ma si usano linguaggi di script server side, non si può proprio fare....
Il sistema che propongo è adatto a chi usa CMS che utilizzano asp.net e che quindi possono modificare a manina il file web.config
Personalmente come CMS uso DNN che propone, per effettuare l'operazione di redirect, uno specifico modulo venduto a caro prezzo....


Per reindirizzare le pagine di un sito a nuovi URL utilizzando lo stato 301 agire come segue:
Creare un file rewriteMaps.config con questa struttura:

<?xml version="1.0" encoding="utf-8"?>
<rewriteMaps>
<rewriteMap name="Redirects">
<add key="/oldurl" value="/newurl" />
<add key="/oldurl2" value="/newurl2" />
... 
</rewriteMap>
</rewriteMaps>

Salvare il file nella root del sito.
Modificare il file web.config inserendo nella opportuna sezione il seguente codice:

<configuration>
<system.webServer>
<rewrite>
<rewriteMaps configSource="rewritemaps.config"><rewriteMaps>
<rules>
<rule name="Redirect rule1 for Redirects">
<match url=".*" />
<conditions>
<add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

Verificare il tutto sul sito: https://httpstatus.io/
Tale sito restituisce il response del server ad ogni chiamata di pagina... potrete così verificare se la procedura funziona

NB: il tutto può essere preceduto dall'analisi di quali siano le pagine indicizzate dal motore di ricerca: scrivere sulla barra della ricerca "site:xyz:it"; la risposta sarà l'elenco delle pagine indicizzate. Per ognuna delle pagine sarà possibile così inserire la chiave e lo specifico indirizzo di nuova destinazione nel file rewriteMaps.config

martedì 15 gennaio 2019

Impostazioni per GoogleAnalytics in un sito creato con DNN 9.1

Dalla versione 9.1 di DNN non sarà più possibile impostare il traking di google sul sito come si poteva fare da amministratori nelle versioni precedenti.
La scappatoia è creare due file da posizionare direttamente nel fileSystem del sito:

Primo file = "GoogleAnalytics.config" da copiare in Portals/0 con questo contenuto...

<?xml version="1.0" encoding="utf-8"?>
<AnalyticsConfig xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Settings>
    <AnalyticsSetting>
      <SettingName>TrackingId</SettingName>
      <SettingValue>UA-35742042-4</SettingValue>
    </AnalyticsSetting>
    <AnalyticsSetting>
      <SettingName>UrlParameter</SettingName>
      <SettingValue/>
    </AnalyticsSetting>
    <AnalyticsSetting>
      <SettingName>TrackForAdmin</SettingName>
      <SettingValue>false</SettingValue>
    </AnalyticsSetting>
  </Settings>
</AnalyticsConfig>


Sostituendo naturalmente "IL TUO TRAKING-ID" con il valore corretto fornito da Google.

Secondo File = "SiteAnalytics.config" da copiare nella root del sito con questo contenuto...

<?xml version="1.0" encoding="utf-8" ?>
<AnalyticsEngineConfig>
<Engines>
<AnalyticsEngine>
<EngineType>DotNetNuke.Services.Analytics.GoogleAnalyticsEngine, DotNetNuke</EngineType>
<ElementId>Head</ElementId>
<InjectTop>False</InjectTop>
<ScriptTemplate>
<![CDATA[   
     
    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', '[TRACKING_ID]']);
      _gaq.push(['_trackPageview']);
      [PAGE_URL]

      (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
    </script>
     
  ]]>
</ScriptTemplate>
</AnalyticsEngine>
</Engines>
</AnalyticsEngineConfig>

Salvati i files nelle rispettive posizioni Google Analytics comincerà a seguire il vostro sito.