---
title: "Navigering CMS/Sökmotorvänliga URL'er."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/191177-navigering-cms-sökmotorvänliga-url-er"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "MickeA.com"
published: "2013-02-23T04:04:49.000Z"
updated: "2013-02-27T13:58:34.000Z"
replies: 12
views: 1235
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/191177-navigering-cms-sökmotorvänliga-url-er"
---

# Navigering CMS/Sökmotorvänliga URL'er.

## #1 — MickeA.com, 2013-02-23T04:04Z

Hej!

Jag har ett egengjort CMS som jag nu ska göra om lite när det gäller URL'er. Man kan ha sidor/artiklar i hur många nivåer som helst:

```
Id
Parent
Namn
...
```

Menyn/trädet kan t.ex. se ut såhär:

```
Hem
  - Nyheter
  - Kalender

Information
  - Kontakt
    - Ring!
    - Skicka E-post
  - Om oss
```

  
URL'erna blir då:

```
/hem/
/hem/nyheter/
/hem/kalender/
/information/
/information/kontakt/
/information/kontakt/ring/
/information/kontakt/skicka-e-post/
/information/omoss/
```

Nu undrar jag över det lättaste sättet att "fånga upp" vald URL. Jag har kollat på hur det fungerar i t.ex. Wordpress, där alla sidor/anrop går genom index-filen, med hjälp av följande i *.htaccess*

```
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
```

Jag är *lite* insatt hur resten fungerar i WP, d.v.s. att sidorna sedan hämtar dess ID utifrån preg_match(), men det jag inte vet är varifrån det hämtas. Vad jag kan göra är att skicka ut alla meny-items tillsammans med dess resp. ID som en lång sträng, och sen hämta resp ID med preg_match. 
Det går ju även att spara hela "menyträdet" som en array och sedan hämta rätt ID/Key med hjälp av *in_array()*.

*$\_SERVER\['REQUEST_URI'\]* hittar ju det som finns i adressfältet, är det "bra" och "säkert" att använda sig av den servervariabeln för att hämta rätt artikel/sida, eller bör man göra på något annat sätt?

Men den stora frågan är ju - vilket sätt är bäst/snabbast? 
Jag bör ju ha hela trädet som någon typ av variabel/array i en fil och läsa in filen vid varje anrop, snarare än att hämta hela trädet från databasen vid varje anrop, eller hur?

Så, hur hade ni löst det?

Tack!

Permalänk: https://www.webforum.nu/p/191177

## #2 — Gildebrand, 2013-02-23T11:05Z

Du gör precis som du skriver och använder dig av servervariabeln :)
Om du lagrar sidorna ungefär som i WordPress (där hela sökvägen till sidan sparas i databasen) så kan du ju använda den variabeln rakt av för att söka efter sidan. Det du kanske ska tänka på dock, är att sanera variabeln innan den går in i en SQL-fråga, men jag utgår från att du inte använder gamla och förlegade mysql_connect så då sköts mycket av det automatiskt ;)

Bäst prestandamössigt? Tja, det är ju så man gör :-)
Det du pratar om benämns ofta som URL segments. Och en snabb Googling kommer visa dig att sättet man implementerar det på i PHP är genom just den servervariabeln. Ofta så brukar man köra explode på den med snedstreck som delimiter, men det beror ju på hur sidorna är organiserade i databasen.

Förresten, hur kommer det sig att du utvecklade ett CMS själv? :-)

Permalänk: https://www.webforum.nu/p/2308022

## #3 — MickeA.com, 2013-02-24T01:20Z

Ok.. Tack! Men är det verkligen ett (bra) alternativ att hämta rätt sida direkt från databasen, istället för att cache/spara alla sidor inkl. dess id'n? "Trädet" hämtas ju rekursivt, nu är det visserligen inte så stora träd, men ändå..? :)

CMS-biten är bara en liten, liten del av ett helt system med massa annat, därför har jag utvecklat det på egen hand.

Permalänk: https://www.webforum.nu/p/2308037

## #4 — Gildebrand, 2013-02-24T08:54Z

Det är nog en god idé att cacha innehållet, särskilt om den nu hämtar innehållet rekursivt :-)

Permalänk: https://www.webforum.nu/p/2308039

## #5 — MickeA.com, 2013-02-24T10:04Z

Jo, men på vilket sätt? Som en array som jag sparar i en fil jag skriver till, eller som en sträng för att sedan ta ut URL'en med regex?

Permalänk: https://www.webforum.nu/p/2308040

## #6 — prplxr, 2013-02-25T09:42Z

Jag sitter just nu och försöker mig på just detta. Problemet är att min htaccess inte verkar fungera alls. Jag får bara ett 404-meddelande om jag lägger till /något/här längst bak i URLen.

Permalänk: https://www.webforum.nu/p/2308052

## #7 — MickeA.com, 2013-02-26T03:32Z

Då gör du förmodligen fel.. Kolla mitt första inlägg, det räcker för att det ska fungera.

Permalänk: https://www.webforum.nu/p/2308065

## #8 — prplxr, 2013-02-26T08:20Z

> **[MickeA.com skrev:](https://www.webforum.nu/p/1558773)**
>
> Då gör du förmodligen fel.. Kolla mitt första inlägg, det räcker för att det ska fungera.

Haha, you don't say!? Jag gör något kalasfel, jag kan bara inte komma på vad. Jag kopierade din .htaccess rakt av. Min gissning är att jag har konfigurerat Apache på något okonventionellt sätt.

Går jag till /index.php fungerar det så klart, men /blahblahblah/blah fungerar inte. Den går inte till /index.php oavsett vilken URL jag skriver.

Permalänk: https://www.webforum.nu/p/2308066

## #9 — The_Hulk, 2013-02-26T16:03Z

Har du aktiverat mod_rewrite in din apache konfiguration?

Permalänk: https://www.webforum.nu/p/2308070

## #10 — prplxr, 2013-02-26T16:57Z

> **[The_Hulk skrev:](https://www.webforum.nu/p/1558778)**
>
> Har du aktiverat mod_rewrite in din apache konfiguration?

Det var mer genant än så. Jag hade glömt RewriteEngine On.

Permalänk: https://www.webforum.nu/p/2308073

## #11 — The_Hulk, 2013-02-27T11:55Z

> **[prplxr skrev:](https://www.webforum.nu/p/1558781)**
>
> Det var mer genant än så. Jag hade glömt RewriteEngine On.

Bra att det löste sig. Glöm inte att markera tråden som löst =)

Permalänk: https://www.webforum.nu/p/2308078

## #12 — @nders, 2013-02-27T12:03Z

> **[The_Hulk skrev:](https://www.webforum.nu/p/1558786)**
>
> Bra att det löste sig. Glöm inte att markera tråden som löst =)

Fast nu är det ju inte hans tråd - prplxr var bara lite av en trådtjuv. ;-)

Permalänk: https://www.webforum.nu/p/2308079

## #13 — The_Hulk, 2013-02-27T13:58Z

> **[@nders skrev:](https://www.webforum.nu/p/1558787)**
>
> Fast nu är det ju inte hans tråd - prplxr var bara lite av en trådtjuv. ;-)

Oj, det tänkte jag inte på. 
Farligt med tjuvar :D

Permalänk: https://www.webforum.nu/p/2308082

---

Tråden på webben: https://www.webforum.nu/amne/php/191177-navigering-cms-sökmotorvänliga-url-er
