Resultat 1 till 17 av 17

Guide - .htaccess och 301-redirect

  1. #1
    Tobias Nyholms avatar
    Tobias Nyholm Tobias Nyholm är inte uppkopplad Moderator
    Reg.datum
    maj 2009
    Ort
    Stockholm
    Inlägg
    881
    I denna lilla guide tänkte jag ta upp gundläggande kunskaper inom regex med hjälp av en hel del exempel. Dessa exempel brukar användas flitigt och är ofta bara att kopiera till ditt eget behov.

    Inledning

    Regex, reguljära uttryck, är ett sätt att uttrycka ett mönster. Man använder den oftast genom att testa om en textsträng passar i ett visst mönster.

    .htaccess är en instruktionsfil till Apache. Apache är den vanligaste webbservern på en linuxdator. Om man använder windows så finns det något liknande men denna guide tar bara upp det vanliga (och användbara).

    301-redirect är en HTTP-svarskod som säger till webbläsaren och google "Den här sidan har permanent flyttat till en annan plats. " En redirect behövs då man tar bort gamla urler, till exempel vid en större uppgradering av en webbplats.

    Regex - Grunder

    Regex ser jättesvåra ut men de är ganska lätta och skriva om man har förstått grunderna. Här nedan är de olika byggstenarna:

    (Punkt) . : vad som helst
    (Astrix) * : noll, en eller flera
    (Plus) + : en eller flera
    (Frågetecken) ? : noll eller en
    (Pipe) | : alternering
    (Parentes) (text) : gruppering
    (Hakparentes) [text] : alternering
    (Tak) ^ : negering
    (Tak) ^ : start på sträng
    (Dollartecken) $ : slut på sträng
    (Dollartecken) $1 : den första grupperingen/variablen
    (Backslash) \ : används för att skydda tecken, tillexempel för att visa att en punk ska vara punkt och inte vad som helst

    Det som kan vara lite svårt att förstå utan tydliga exempel är hakparenteserna och variabler.
    Kod:
    Regexet a[cb]a matchar aba och aca men inte acba eller abca
    Kod:
    Om regexet start(.*)slut körs mot strängen "startTobiasslut" så kommer variablen $1 att innehålla "Tobias"
    Källa: Googlehemsida (här finns också lite exempel)

    .htaccess

    Nu när vi har ett litet hum om regex så kan vi börja med användbara exempel. Dessa exempel kan du skriva in i din .htaccess fil. .htaccess filen ligger vanligtvis i din webbsidas rootkatalog. (Den kan också ligga i en mapp, men då kontrollerar den bara den mappen och dess undermappar). Innan man skriver dessa exempel måste dessa rader stå i .htaccess:
    Kod:
    RewriteEngine On #starta motorn
    RewriteBase / #vart ska man utgå ifrån, om din webbsida ligger i en undermapp så kanske detta ska ändras...
    Exempel 1 - Redirect från non-www till www
    Kod:
    #Redirect from non-www to www
    RewriteCond %{HTTP_HOST} ^exempel\.se [NC] 
    RewriteRule (.*) http://www.exempel.se/$1 [R=301,L]
    Rad1: Om domänen börjar med "exempel.se" (no-case)
    Rad2: Så spara allt som står efter domänen i en variabel $1 och Redirecta (301) till http://www.exempel.se/$1 (sluta behandla fler regler)

    Exempel 2 - Redirect från www till non-www
    Kod:
    #Redirect from www to non-www
    RewriteCond %{HTTP_HOST} ^www\.exempel\.se [NC] 
    RewriteRule (.*) http://exempel.se/$1 [R=301,L]
    Rad1: Om domänen börjar med "www.exempel.se" (no-case)
    Rad2: Så spara allt som står efter domänen i en variabel $1 och Redirecta (301) till http://exempel.se/$1 (sluta behandla fler regler)

    Exempel 3 - Redirect från "vilken subdomän som helst" till www
    Kod:
    RewriteCond %{HTTP_HOST} !^www\.exempel\.se [NC] 
    RewriteRule (.*) http://www.exempel.se/$1 [R=301,L]
    Rad1: Om domänen inte börjar med "www.exempel.se" (no-case)
    Rad2: Så spara allt som står efter domänen i en variabel $1 och Redirecta (301) till http://exempel.se/$1 (sluta behandla fler regler)


    Exempel 4 - Byt namn på en fil
    Kod:
    # Rewrite robots.txt to robots.php:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule robots\.txt robots.php [L]
    Rad1: Om urlen inte går till en riktig fil
    Rad2: Om urlen inte går till en riktig mapp
    Rad3: Så om det efter domänen är robots.txt så läs in filen robots.php (sluta behandla fler regler)

    Detta är inte en redirect. Detta är en instruktion till webbserven att den ska läsa in robots.php när besökaren vill ha robots.txt.

    Exempel 5 - Byt namn på en fil, allmänt
    Kod:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*)\.htm$ $1.php [L]
    Rad1: Om urlen inte går till en riktig fil
    Rad2: Om urlen inte går till en riktig mapp
    Rad3: Så om det efter domänen är något.htm så läs in filen något.php (sluta behandla fler regler)

    Exempel 6 - Ta bort filändelser
    Kod:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*)\.php /$1 [R=301,L]
    Rad1: Om urlen inte går till en riktig fil
    Rad2: Om urlen inte går till en riktig mapp
    Rad3: Så om det efter domänen är något.php så redirect till /något (sluta behandla fler regler)

    Edit: Sen måste man med PHP-script se till att rätt sida visas.

    Exempel 7 - Egna felsidor
    Kod:
    # Customized server error messages:
    ErrorDocument 404 /error404.php
    ErrorDocument 403 /error403.php
    Rad1: Om sidan inte kan hittas, ladda filen error404.php
    Rad2 Om sidan är förbjuden, ladda filen error403.php

    Exempel 8 - Enkel redirect
    Kod:
    Redirect 301 /gamal-url.html /en/ny-url
    Rad1: Gör en 301 redirect från gamal-url.html till /en/ny-url

    Detta kallar jag för en enkel redirect för att här kan man inte använda regex.

    Exempel 9 - Redirect en gammal mapp till en ny, allmänt
    Kod:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule gammal/mapp/(.*)$ /nytt/$1 [R=301,L]
    Rad1: Om urlen inte går till en riktig fil
    Rad2: Om urlen inte går till en riktig mapp
    Rad3: Så om det efter domänen börjar med sökvägen gammal/mapp/(sen vad som helst) så redirecta (301) till /nytt/(samma vad som helst) (sluta behandla fler regler)

    OBS. Detta gäller inte om man går in på www.exampel.se/gammal/mapp. (Studera regexet). Om man vill att även detta sista specialfall ska fångas upp av regeln. Byt ut rad 3 mot denna rad:
    Kod:
    RewriteRule gammal/mapp/?(/.*)?$ /nytt/$1 [R=301,L]


    Exempel 10 - Redirect en gammal domän till en ny
    Kod:
    RewriteRule (.*) http://www.nydoman.se/$1 [R=301,L]
    Rad1: Spara allt som står efter den gamla domänen i en variabel $1 och Redirecta (301) till http://www.nydoman.se/$1 (sluta behandla fler regler)

    Detta bör göras om en webbplats byter domän. Denna rad placeras i .htaccess-filen på den gamla domänen.

    OBS. Denna rad är den samma som i exempel 1-3. Skillnaden är att det inte finns något villkor framför regeln.

    Exempel 11 - Redirect med query string
    Kod:
    RewriteCond %{REQUEST_URI}  ^/index\.php$
    RewriteCond %{QUERY_STRING} ^id=([0-9]*)&category=bananer$
    RewriteRule ^(.*)$ http://www.anotherdomain.site/page/newpage [R=301,L]
    Om man ska göra en redirect från en sida med query strings så bör man använda rewrite cond och %{QUERY_STRING}. Varken RewriteRule, Redirect eller RewriteMatch läser query strings.

    Exempel 12 - Redirect till HTTPS (SSL)
    Kod:
    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
    Rad1: Om det är port 80, DVS http
    Rad2: Redirecta till https://www.example.com

    Denna regel kan läggas till efter dina befintliga regler för att kräva att HTTPS-protokollet används.

    Fotnot

    Alla exempel är inte testkörda i skrivande stund. Kommentera eller PMa om du märker att det är något problem med något exempel så ska jag redigera detta inlägg.

    Fler exempel kommer att läggas till vart efter jag ser att det behövs.
    Senast redigerat av Tobias Nyholm den 2014-08-26 klockan 16:08. Anledning: La in exempel 12.
    CTO på Happyr.com. Vi gör rekrytering effektivt

  2. #2
    nestaks avatar
    nestak nestak är inte uppkopplad Lär mig SEO
    Reg.datum
    feb 2011
    Inlägg
    121
    Jag har ingen .htaccess fil i mitt webhotell / rooten.
    Jag har även flera sidor på min host, skall jag ha varsin .htacess i varje mapp då jag har flera"hemsidor"?

    Är det bara att skapa en .htaccess eller ska webhotellet göra det?

  3. #3
    Tobias Nyholms avatar
    Tobias Nyholm Tobias Nyholm är inte uppkopplad Moderator
    Reg.datum
    maj 2009
    Ort
    Stockholm
    Inlägg
    881
    Ja, du ska ha en .htaccess i varje mapp när du har en hemsida. .htaccess ska ligga i samma mapp där du har din index.php (index.htm).

    Om du har instruktioner att skriva i .htaccess så ska du skapa en sån. Det är inget ditt webbhotell kommer göra åt dig.
    CTO på Happyr.com. Vi gör rekrytering effektivt

  4. #4
    nestaks avatar
    nestak nestak är inte uppkopplad Lär mig SEO
    Reg.datum
    feb 2011
    Inlägg
    121
    Citat Ursprungligen postat av Tobias Nyholm Visa inlägg
    Ja, du ska ha en .htaccess i varje mapp när du har en hemsida. .htaccess ska ligga i samma mapp där du har din index.php (index.htm).

    Om du har instruktioner att skriva i .htaccess så ska du skapa en sån. Det är inget ditt webbhotell kommer göra åt dig.
    Ok.
    Känns rätt segt att sitta och lägga in en .htaccess fil i varje map då det handlar om ett par stycken men behöver den innehålla något eller?

    Om jag har förståt det rätt lägger man in det som en txt fil va?

  5. #5
    Tobias Nyholms avatar
    Tobias Nyholm Tobias Nyholm är inte uppkopplad Moderator
    Reg.datum
    maj 2009
    Ort
    Stockholm
    Inlägg
    881
    Du behöver endast skapa en .htaccess fil för varje hemsida. Det är i undantagsfall som du vill ha en .htaccess fil i en underkatalog. Om du inte behöver skriva några instruktioner i en hemsidas .htaccess fil så behöver du inte skapa en.

    En .htaccess fil är ingen .txt. Filen ska heta .htaccess (utan filändelse och med punkten i början). Vilket program du använder för att redigera den spelar ingen roll.
    CTO på Happyr.com. Vi gör rekrytering effektivt

  6. #6
    nestaks avatar
    nestak nestak är inte uppkopplad Lär mig SEO
    Reg.datum
    feb 2011
    Inlägg
    121
    Citat Ursprungligen postat av Tobias Nyholm Visa inlägg
    Du behöver endast skapa en .htaccess fil för varje hemsida. Det är i undantagsfall som du vill ha en .htaccess fil i en underkatalog. Om du inte behöver skriva några instruktioner i en hemsidas .htaccess fil så behöver du inte skapa en.

    En .htaccess fil är ingen .txt. Filen ska heta .htaccess (utan filändelse och med punkten i början). Vilket program du använder för att redigera den spelar ingen roll.
    Ok, nu förstår jag lite bättre.
    Men om man vill ha en sida som kommer upp i serpen på mina sök ord osv, så är en .htaccess fil inte nödvändigt för det över huvudtaget va? Således jag optimerar bra..

  7. #7
    Tobias Nyholms avatar
    Tobias Nyholm Tobias Nyholm är inte uppkopplad Moderator
    Reg.datum
    maj 2009
    Ort
    Stockholm
    Inlägg
    881
    Det stämmer, en .htaccess fil är instruktioner till din webbserver. Google kan inte läsa den, ej heller vanliga besökare.
    Man rankar inte bättre bara för att man har en sån instruktionsfil.
    CTO på Happyr.com. Vi gör rekrytering effektivt

  8. #8
    nestaks avatar
    nestak nestak är inte uppkopplad Lär mig SEO
    Reg.datum
    feb 2011
    Inlägg
    121
    Citat Ursprungligen postat av Tobias Nyholm Visa inlägg
    Det stämmer, en .htaccess fil är instruktioner till din webbserver. Google kan inte läsa den, ej heller vanliga besökare.
    Man rankar inte bättre bara för att man har en sån instruktionsfil.
    Med andra ord, då har jag förståt det rätt !

  9. #9
    goodvibess avatar
    goodvibes goodvibes är inte uppkopplad Lär mig SEO
    Reg.datum
    feb 2010
    Ort
    Skåne
    Inlägg
    45
    Hej Tobias!

    Tack för hjälpen!

    goodvibes

  10. #10
    AaronAxelssons avatar
    AaronAxelsson AaronAxelsson är inte uppkopplad SEO-proffs: utökad profil
    Moderator för alla forumsektioner
    Reg.datum
    jun 2010
    Ort
    Örnsköldsvik
    Inlägg
    775
    Hoppar in i den här tråden lite, och hoppas att jag kan få lite klarhet här.

    Jag försöker göra en redirect från http://gammaldomän.com/ till http://nydomän.se/mapp
    Och det jag vill är att alla sidor på gamla domänen ska gå till samma "mapp" på nya domänen.

    Tänkte att det skulle funka bra med en sån "enkel redirect" som den kallas i guiden här, men det gör det såklart inte.
    Funderar på vad det är jag kan ha missat?

    .htaccess-filen ser just nu ut såhär:
    Kod:
    #Options +FollowSymlinks
    RewriteEngine On
    redirect 301 / http://nydomän.se/mapp
    Är det nåt annat jag borde gjort kanske? Eller ja, jag har inte koll helt enkelt.

  11. #11
    Tobias Nyholms avatar
    Tobias Nyholm Tobias Nyholm är inte uppkopplad Moderator
    Reg.datum
    maj 2009
    Ort
    Stockholm
    Inlägg
    881
    Citat Ursprungligen postat av AaronAxelsson Visa inlägg
    Hoppar in i den här tråden lite, och hoppas att jag kan få lite klarhet här.

    Jag försöker göra en redirect från http://gammaldomän.com/ till http://nydomän.se/mapp
    Och det jag vill är att alla sidor på gamla domänen ska gå till samma "mapp" på nya domänen.

    Tänkte att det skulle funka bra med en sån "enkel redirect" som den kallas i guiden här, men det gör det såklart inte.
    Funderar på vad det är jag kan ha missat?

    .htaccess-filen ser just nu ut såhär:
    Kod:
    #Options +FollowSymlinks
    RewriteEngine On
    redirect 301 / http://nydomän.se/mapp
    Är det nåt annat jag borde gjort kanske? Eller ja, jag har inte koll helt enkelt.
    Apache gör skillnad på små och stora bokstäver. Skriv 'Redirect' istället för 'redirect'. Detta kommer endast påverka starsidan på http://gammaldomän.com/. Om du vill att hela siten ska skickas vidare till http://nydomän.se/mapp så ska du skriva som i exempel 10:
    Kod:
    	RewriteRule (.*) http://www.nydoman.se/mapp [R=301,L]
    CTO på Happyr.com. Vi gör rekrytering effektivt

  12. #12
    AaronAxelssons avatar
    AaronAxelsson AaronAxelsson är inte uppkopplad SEO-proffs: utökad profil
    Moderator för alla forumsektioner
    Reg.datum
    jun 2010
    Ort
    Örnsköldsvik
    Inlägg
    775
    Japps, nu funkade det alldeles utmärkt.

    Tack så mycket!

  13. #13
    Michael Åstmars avatar
    Michael Åstmar Michael Åstmar är inte uppkopplad SEO-proffs
    Reg.datum
    jul 2007
    Ort
    Smålandsstenar
    Inlägg
    92
    Url rewrite för .asp

    Vi har en sajt byggd på gammal .asp (ej .net) som vi skulle behöva köra rewrite på. Mig veteligen finns det inte så många smarta lösningar, men jag har hittat detta: http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

    Är det någon som provat det? Eller någon klurig rackare där ute som har något bättre förslag?

  14. #14
    Tobias Nyholms avatar
    Tobias Nyholm Tobias Nyholm är inte uppkopplad Moderator
    Reg.datum
    maj 2009
    Ort
    Stockholm
    Inlägg
    881
    Det stämmer att det inte finns så smarta lösningar för Windows. Jag tror man kan göra serverinställningar i IIS som kör rewrite. Jag tror också att man kan skriva en web.conf fil eller dylikt.
    @StefanBergfeldt eller @Kimpo brukar ha bra koll på programmering i windowsvärlden.
    CTO på Happyr.com. Vi gör rekrytering effektivt

  15. #15
    welanders avatar
    welander welander är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    aug 2011
    Ort
    Märsta / Stockholm
    Inlägg
    249
    Klart det finns smarta lösningar till windows.
    Jag har inte försökt mig på URL rewrite module 2 men jag har provat detta: http://urlrewriter.net/
    Där ser koden ut nästan som i apaches lite mer såhär: du laddar ner urlrewriter.dll och lägger den i din bin mapp på webbservern.

    Sedan använder du denna kod i web.config:
    Kod:
    <configSections>
        <!-- The <configSections> element must contain a <section> tag for the <RewriterConfig> section element.
    			The type of the section handler is RewriterConfigSerializerSectionHandler, which is responsible for
    			deserializing the <RewriterConfig> section element into a RewriterConfig instance... -->
        <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
    </configSections>
    <httpModules>
          <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
          <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </httpModules>
    och sedan lägger du inuti <configuration /> i din web.config kod typ såhär:
    Kod:
    <RewriterConfig>
        <Rules>
          <RewriterRule>
            <LookFor>~/post/(.*)\.aspx</LookFor>
            <SendTo>~/Post.aspx?urlbase=$1</SendTo>
          </RewriterRule>
        </Rules>
      </RewriterConfig>
    och så vidare, för varje ny regel lägger du till <rewriterrule> och det inuti den.
    Jag tycker den är väldigt smidig och fungerar bra.

  16. #16
    Michael Åstmars avatar
    Michael Åstmar Michael Åstmar är inte uppkopplad SEO-proffs
    Reg.datum
    jul 2007
    Ort
    Smålandsstenar
    Inlägg
    92
    Intressant. Ska kika på detta.
    Fungerar det bara på .net eller funkar det på gammal hederlig .asp?
    Tack welander!

  17. #17
    Tobias Nyholms avatar
    Tobias Nyholm Tobias Nyholm är inte uppkopplad Moderator
    Reg.datum
    maj 2009
    Ort
    Stockholm
    Inlägg
    881
    Jag har nu lagt in ett exempel 12. Det kan vara bra för dem som har köpt SSL protokoll.
    CTO på Happyr.com. Vi gör rekrytering effektivt

Ämnesinformation

Användare som tittar på det här ämnet

Det är för närvarande 1 användare som tittar på det här ämnet. (0 medlemmar och 1 gäster)

Liknande ämnen

  1. 301 redirect: förklaring och guide
    Av Jim Westergren i forum Optimering
    Svar: 30
    Senaste inlägg: 2011-05-29, 17:32
  2. htaccess och 301 redirect
    Av rolmike i forum Övrigt inom SEO
    Svar: 2
    Senaste inlägg: 2010-06-04, 18:07
  3. byta hosting och 301 redirect
    Av Jacob Jarnvall i forum Övrigt inom SEO
    Svar: 4
    Senaste inlägg: 2008-10-28, 15:28
  4. 302 och 301 redirect
    Av southqvist i forum Google
    Svar: 4
    Senaste inlägg: 2008-02-14, 10:51
  5. C-panel och 301 redirect
    Av Jacob Jarnvall i forum Övrigt inom SEO
    Svar: 3
    Senaste inlägg: 2008-01-08, 18:53