Resultat 1 till 7 av 7

hur gör man mappstruktur?

  1. #1
    erisons avatar
    erison erison är inte uppkopplad Lär mig SEO
    Reg.datum
    dec 2007
    Inlägg
    97
    Det skrivs mycket om att man ska ha mappstruktur för sin URL, men hur gör man egentligen detta rent tekniskt? (använder php)

    Jag vill alltså har url:er såsom nyhetssidan/sport/hockey/artikel1.htlm utan att behöva ha en massa mappar överallt. Jag har sökt runt på detta men verkligen inte hittat.

    EDIT: Nu hamnade denna sidan fel, eftersom jag vill ha detta på en dynamisk site. När en användare registrerar sig ska de automatiskt få url sidan.se/användarnamn

    Tack på förhand!

    Mvh Erik
    Senast redigerat av erison den 2008-06-12 klockan 00:27.

  2. #2
    Björns avatar
    Björn Björn är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    jun 2006
    Ort
    Sthlm
    Inlägg
    301
    med mod-rewrite modulen i apache är oftast sättet det görs på.

  3. #3
    objxs avatar
    objx objx är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    apr 2008
    Inlägg
    18
    Hej Erik!

    Lättaste sättet att åstadkomma detta är att använda mod_rewrite.
    Mod_rewrite är inte bara ett verktyg för att skriva sökmotorvänliga URL:er, utan kan användas till betydligt fler saker.

    Det vanligaste sättet att använda mod_rewrite är att lägga in en fil med namnet ".htaccess" i den mapp där du vill använda dessa omskrivningsfunktioner. Om du vill använda det på hela din sida så lägger du filen i roten på ditt webbhotell.

    I filen så måste du först tala om för servern att du vill aktivera denna funktion.
    Detta gör du genom att skriva:
    "RewriteEngine on" längst upp i filen.

    Därefter skulle jag föreslå att du lägger in en standardregel som säger att alla förfrågningar till filer som existerar på servern inte skall skrivas om.
    Ett sätt att göra det på är att skriva följande rader:
    RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
    RewriteCond %{REQUEST_FILENAME} -d [NC]
    RewriteRule .* - [L]

    Nedanför dessa rader kan du sedan lägga in dina regler för hur en URL som inte finns skall tolkas.

    Låt oss ta ett exempel:
    Om en besökare öppnar:
    "www.mindoman.se/produkter/tv-apparater/samsung/"

    Så kan du göra om denna förfrågan till:
    "www.mindoman.se/index.php?katalog1=produkter&katalog2=tv-apparater&katalog3=samsung"

    Med hjälp av PHP och $_SERVER['QUERY_STRING'] kan du sedan läsa av vilken adress som efterfrågas och presentera aktuellt innehåll utifrån det.

    Ovanstående regel skulle se ut så här (hoppas jag):
    RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/.*?$ index.php?kategori1=$1&kategori2=$2&kategori3=$3 [QSA,NC,L]

    Syntaxen ser ut så här:
    RewriteRule [mönster-som-skall-matchas] [sidan-som-skall-behandla-datan] [ytterligare-regler-och-alternativ].
    I detta exempel ser det ut så här:

    [mönster-som-skall-matchas] = ^([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/.*?$

    [sidan-som-skall-behandla-datan] = index.php?kategori1=$1&kategori2=$2&kategori3=$3

    [ytterligare-regler-och-alternativ] = [QSA,NC,L]

    QSA = Behålla eventuella queries som finns i URL:en.

    Om QSA finns med i regeln så skulle följande url...
    http://www.mindoman.se/produkter/tv-...hp?visa=priser
    ... resultera i följande querysträng:
    kategori1=produkter&kategori2=tv-apparater&kategori3=samsung&visa=priser

    Om QSA inte finns med i regeln så skulle följande url...
    http://www.mindoman.se/produkter/tv-...hp?visa=priser
    ... resultera i följande querysträng:
    kategori1=produkter&kategori2=tv-apparater&kategori3=samsung


    NC = Ej skillnad på stora och små bokstäver (i URL:en)

    L = Last rule. dvs: om detta mönster går att matcha mot den efterfrågade URL:en så slutar den kolla efter eventuella andra regler som stämmer in på URL:en. (Du kan ha flera regler i en htaccess-fil för att matcha olika typer av förfrågningar. En regel per rad.)

    I sin helhet skulle din .htaccess-fil se ut så här:

    #--------------
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
    RewriteCond %{REQUEST_FILENAME} -d [NC]
    RewriteRule .* - [L]

    RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/.*?$ index.php?kategori1=$1&kategori2=$2&kategori3=$3 [QSA,NC,L]
    #--------------

    Jag gjorde ett snabbt test av denna htaccess på min lokala server, där jag kör Apache och PHP.
    Så om du använder Apache skall det fungera.

    Kör du IIS eller annan serverlösning så gäller helt andra regler.

    Det finns fler exempel på olika omskrivningar om du söker på Google efter htaccess och mod_rewrite.
    Det viktigaste är att du förstår grundprincipen av vad en htaccess-fil gör och hur syntaxen ser ut för regler.

    Lycka till med kodandet!

  4. #4
    erisons avatar
    erison erison är inte uppkopplad Lär mig SEO
    Reg.datum
    dec 2007
    Inlägg
    97
    Underbart svar! Ska titta på det genast.

  5. #5
    Bernt Johanssons avatar
    Bernt Johansson Bernt Johansson är inte uppkopplad SEO-proffs: utökad profil
    Moderator för alla forumsektioner
    Reg.datum
    mar 2006
    Ort
    Piteå
    Inlägg
    1 074
    Eller så kan du helt enkelt lagra alla URLer i din databas kopplat till dina sidor. Genom att styra om all trafik som kommer in (via .htaccess), oavsett url, till en och samma fil (index.php) och sedan läsa av vad den inkomna urlen var kan du använda värdet för att slå i databasen efter den sida som ska visas.

    Då måste man komma ihåg att hantera 404 fel ifall det kommer in en request för en URL som inte finns i databasen dock.

    Med denna variant får man total frihet och kan sätta vilken url man vill på sitt innehåll.

  6. #6
    Björns avatar
    Björn Björn är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    jun 2006
    Ort
    Sthlm
    Inlägg
    301
    Citat Ursprungligen postat av Bernt Johansson
    Eller så kan du helt enkelt lagra alla URLer i din databas kopplat till dina sidor. Genom att styra om all trafik som kommer in (via .htaccess), oavsett url, till en och samma fil (index.php) och sedan läsa av vad den inkomna urlen var kan du använda värdet för att slå i databasen efter den sida som ska visas.

    Då måste man komma ihåg att hantera 404 fel ifall det kommer in en request för en URL som inte finns i databasen dock.

    Med denna variant får man total frihet och kan sätta vilken url man vill på sitt innehåll.
    Har gjort flera siter på det viset.. en stor nackdel med metoden är att det blir mycket logik, och mycket logik på en plats dessutom (index).. jag skulle inte rekommendera metoden. Jag gillade den förut, men har börjat inse att det är att gå över ån efter vatten egentligen.

  7. #7
    objxs avatar
    objx objx är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    apr 2008
    Inlägg
    18
    Oavsett vilken metod man använder så är det viktigt att verifiera URL'en innan man använder den i några databasförfrågningar. (addslashes eller mysql_escape_string)

    MySQL-injections är rätt vanligt när man använder mod_rewrite på sin hemsida och matchar URL'ens utseende mot en databastabell.

Ä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)