Redirecta allt till root med htaccess

Hade fått tillgång till en ftp-server med en väldigt massa filer på från många år tillbaka som är indexerade av google. En herrans röra kan man säga.

Tanken är att vi ska utveckla en ny sajt och under tiden så ville jag att inga av de gamla filerna skulle gå att nå. Servern är av typen Apache som jag inte är så van att arbeta med. Så efter ett intensivt googlande och testande så tror jag att jag fått till en bra redirect-regel.

Denna redirectar endast html och php-filer och fungerar på mappar. Alla anrop på nämnda dokumenttyper skickas till rootmappen.

Options +FollowSymlinks RewriteEngine On RewriteCond %{THE_REQUEST} ^GET\ .*(php|html|htm)\ HTTP RewriteRule ^(.*).(php|html|htm)$ / [R=301,L]
By Jesper Lind

Spåra formulärspostningar med Google Analytics

Har tänkt igenom hur denna blogg kan bli bättre och roligare att läsa och har en del ideér. För att kunna mäta om förändingar är bra eller dåliga så ville jag först sätta upp några mål i Google Analytics, och det har jag sysslat med de senaste dagarna. Tänkte dela med mig av vad jag lärt mig.

Först tänkte jag igenom vad målen med bloggen är och kom fram till att det viktigaste och roligaste är när man får input från sina läsare. Det är på så sätt som bloggen kan utvecklas och växa och därför bestämde jag mig för att sätta upp följande två mål.

  1. Kontaktformulär skickat
  2. Kommentar postad

När man sätter upp mål-urlerna i Google Analytics så har man tre olika alternativ, Exakt matchning, Rubrikmatchning och Matchning av vanliga uttryck. Utan att gå in för mycket på dem så kan jag kontatera att Exakt matchning fungerade bäst för det ja ville göra. Hos Google finns det en bra hjälpsida som förklarar hur de olika alternativen fungerar.

De två målen har jag implementerat lite olika så tänkte förklara här hur jag gjort.

Så satte jag upp mål för Kontaktformuläret

Kontaktformuläret postar tillbaks till sig själv och jag har alltså ännu inte gjort om det till PRG-designmönstret som jag skrev om här om dagen. Eftersom adressen inte ändras var jag tvungen att skicka med den påhittade sida "/contact-form-submitted" som jag angett i mitt första mål.

I ContactControllern (ASP.NET MVC) så skickar jag med parameter i ViewData när användaren har postat meddelandet:

this.ViewData["TrackPageView"] = "\"/contact-form-submitted\"";

Denna parameter sätts sen in längst ner på sidan i skriptet för Google Analytics:

<script type="text/javascript">
//<![CDATA[
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write("\<script src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'>\<\/script>" );
//]]>
</script>
<script type="text/javascript">
//<![CDATA[
var pageTracker = _gat._getTracker("<%=Request.Url.ToString().ToLower().IndexOf("codeodyssey.se") != -1 ? "UA-406884-2" : "UA-406884-1" %>");
pageTracker._initData();
pageTracker._trackPageview(<%=ViewData["TrackPageView"] %>);
//]]>
</script>

Mål-koden för kommentarerna

Kommentarsfunktionen har jag nyligen gjort om så den följer PGR-mönstret och här hade jag lite svårare att lägga in spårningskoden på rätt ställe. Provade en del olika grejer där jag bland annat försökte lägga in det på den adress som man postar kommentaren till (bloggurl plus "/add-comment" på slutet). Vet inte exakt varför det inte gick med regulärt uttryck men antar att det beror på att den sidan returnerar en 302-respons (see other adress). Kan vara så att man inte kan tracka såna sidor med Google Analytics.

Sen kom jag på en enklare lösning. La på ett onclick-event på submit-knappen istället där jag anropar pagetrackern och det fungerar nu fint.

<input onclick="pageTracker._trackPageview('/comment-submitted');" type="submit" value="<%= GetLocalResourceObject(" />" class="submit-btn"/>

Först trodde jag att huvudskriptet där tracken inkluderas var tvungen att ligga ovanför eventet, med det visade det sig att den inte behövde, den har ju redan registrerats när sidan laddas. Google Analytics Tracking API var användbart för felsökning och genom att anropa _getAccount() kunde jag bekräfta att eventet hade kontakt med trackern.

Dags att mäta, förändra och förfina

Så nu är det bara att luta sig tillbaks och börja analyserar hur kommentarer och kontaktmeddelande postas på Code Odyssey. Kom gärna med förslag och ideér hur sidan kan göras bättre för att uppmuntra fler kommentarer och rikare samtal.

Vill du själv göra samma sak och använder WordPress kan jag rekommendera How To Track Wordpress Signups and Comments With Google Analytics hos TD Creative.

By Jesper Lind

Söker du oss på Google så får du mer reklam

Japp nu är det dag att stäppa upp the Adsense-game en nivå och så kanske vi kan tjäna några extra korvören. Problemet är ju bara det att du vår vanliga läsare är en tech geek som slutade att klicka på annonser nån gång runt 2001. Så det är ju inte så stor idé att visa mer reklam än det lilla vi haft i högerspalten.

Istället gör vi nu så att vi bara vi visar en stor banner längst upp på de som söker via Google. Så vi får nån nytta av förstaplasten vi har på "vinterkläder", alla som ska in och förstå hur de använder visningsprogram för bilder och fax eller hitta sina lösenord till Geni.com. Dessa tre sökningar utgör den större delen av trafiken på sajten vilket är rätt sjukt när det inte direkt är huvudämnen vi skriver om. Eftersom dessa besökare bara stannar här i genomsnitt 40 sekunder så känns det som man lika gärna kan blaffa upp en banner.

Här under är min väldigt enkla kodrad för att genomföra detta. Den är inte så speciellt genomtänkt så går säkert att förbättra. Bara kollar ifall referer innehåller "google." och att den inte kommer från Google Reader. Vill du läsa något mer avancerat så kolla in Parse Google Search Query på Dot Net Peris som visar hur man kan få fram söktermer.

<%string referrer = (HttpContext.Current.Request.UrlReferrer != null) ? HttpContext.Current.Request.UrlReferrer.ToString():string.Empty;
if (referrer.IndexOf("google.") != -1 && referrer.IndexOf("reader") == -1){%>
<!--Your Adsense Code here-->
<%}%>

Gör du nåt likande på din blogg? Skulle vara intressant att höra om andra tips på ämnet.

By Jesper Lind

Håll reda på dina sajters Google PageRank med smidig tjänst

Har provat på PageRankAlert och måste säga att det är en smidig tjänst. Man kan lägga till url:er til sina webbsajter och få email när PageRank förändras.

Detta värde är alltså Google's rankningsvärde för att hålla reda på hur viktig en sajt anses vara. Nuförtiden är det ju tvivelaktigt hur mycket detta värde spelar in i sökmotorns algorithmer, men endå kul med statistik.

Tyvärr har Codeodyssey går ner en del det sista halvåret till en 3:a. Vi som åtminstonde låg på en 4: förra året.

By Jesper Lind

Jaiku flyttas till Google App Engine

Mikroblogg-tjänsten Jaiku har under helgen varit nere för underhåll. Det har spekulerats ifall Google (som köpt tjänsten) håller på att flyttade den till deras Google App Engine och det verkar vara fallet. Jaikuinvites har kört en tracert som tyder på det i alla fall.

N borde det inte dröja länge innan de öppnar tjänsten för alla att registrera sig. Antagligen kommer de öven att koppla in den mot det vanliga google kontot/Gmail.

Hoppas nu bara att de drar igång på måndag igen, för det är ganska trist utan tjänsten som man börjat uppskatta mycket. Har blivit en del Twittrande istället för att kompensera.

By Jesper Lind

Google OpenSocial - API för sociala nätverk släpps i veckan

Det här är något jag undrar när det skulle ske och har pratat mycket med folk om nyligen. Frågan om vilka som skulle utveckla en grundstomme för sociala grafer, som sociala nätverk ska kunna baserar sina data på.

Man kan anta att användarna börjar tröttna på att lägga till sina vänner om och om igen, för varje nytt socialt nätverk som blir populärt. Utvecklare av tredje part lika så, som har tvingats välja ett socialt nätverk att satsa på, och lära sig nya tekniker.

Aktören som lyckats med att skapa en sådan bas för social information skulle bli kungen på sociala nätverk och ta rollen som spindeln i nätet.

Det har ryktats en del om att Google hade något på gång och namnet "Maka-maka" har nämnts. Nu verkar det som om denna lansering kommer snarare än väntat. TechCrunch har fått nys om att Google kommer att släppa en samling av APIs för utveckling av mot just ett sådant ramverk.

OpenSocial (länken ska komma upp på torsdag) som API:erna kallas, kommer gå att utveckla mot med vanlig JavaScript och HTML. Ett smart drag eftersom det inte blir beroende av någon speciell serverteknik.

API:erna som är tre till antalet innehåller data om användare, deras nätverk av vänner och aktiviteter.

Man har inför lanseringen teamat upp med partnerna Google's egna Orkut, Salesforce, LinkedIn, Ning, Hi5, Plaxo, Friendster, Viadeo and Oracle som ska hosta ramverket från början. Utvecklingpartners är Flixster, iLike, RockYou and Slide som antagligen kommer att levera några demos på hur det används.

Tillsammans blir detta en imponerande allians som kan ge Facebook och MySpace en bra match.

Nu förstår man varför inte Google satsade hårdare på att "vinna" över Microsoft i budgivningen av den extremt dyra delen av Facebook. De hade helt enkelt något eget på gång i labbet.

By Jesper Lind

Google Reader uppdateras med sökruta

http://www.codeodyssey.se/upload/resource/blog/search-reader(1).gif

Startade upp Readern när jag skulle prenumenera på ett nytt RSS-flöde och märkte med en gång att något hade förnyats. Ajax-indikationen som visar att något laddas var annolunda med gul bakgrund.

Sen såg jag den viktigast nyheten i denna uppdatering, ett sökfält längst uppe till höger!

Det var verkligen på tiden och nu kan jag ta bort den temporära söklösningen som jag hackade dit med ett Greasemonkey-skript.

Läs mer om uppdateringen på den officiella Google Reader bloggen

By Jesper Lind

Säkerhetsproblem med statistikverktyget Urchin

Urchin är ett statistikverktyg för att analyera besökartrafik. Det köptes år 2005 av Google och är det program som ligger till grund för Google Analytics.

Nu har det kommit fram Urchin v5.7.03 verkar vara sårbart mot XSS-attacker och att det i vissa fall verkar att kringgå inloggningsskyddet. Ha.ckers.org har mer info och visar exempel på hur man kan länka in JavaScript från en extern sajt, till inloggningsformuläret i Urchin.

Vi jobbar med några servrar som det körs Urchin på och har kunnat bekräfta XSS-problemen. Här är ett exempel på en länk som jag lyckades köra (adressen och portnumret är påhittade)

http://www.siterunningurchin.domain:88/?"><script>alert('XSS%20Attack!')</script>

Så jag rekommenderar alla som kör Urchin på sina servrar att omedelbart stänga av "remote login"om det skulle vara igång.

Nu hoppas vi på att det kommer en säkerhetsuppdatering som fixar dessa problem.

Uppdatering: Problemet har även tagits upp i Google Gruppen för Urchin. Urchin 5 Software > Cross Site Scripting XSS Vulnerability

By Jesper Lind

Snart dags för uppdatering av PageRank?

Läste hos beNi att VI-SU har gjort en beräkning på när nästa uppdatering av Google PageRank färväntas ske.

Om man kollar på hur lång tid det vart mellan uppdateringarna innan så brukar det vara i genomsnitt 77,18 dagar mellan varje. Om Google hade följt denna takten så skulle uppdateringen skett igår den 16 aug. 

By Jesper Lind