---
title: "Apache - RegExp i RewriteCond"
type: "forum-thread"
url: "https://www.webforum.nu/amne/webbservrar/124141-apache-regexp-i-rewritecond"
topic: "Webbservrar"
topic_url: "https://www.webforum.nu/amne/webbservrar"
author: "dectgap"
published: "2005-03-10T21:52:07.000Z"
updated: "2005-03-10T23:22:27.000Z"
replies: 3
views: 374
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/webbservrar/124141-apache-regexp-i-rewritecond"
---

# Apache - RegExp i RewriteCond

## #1 — dectgap, 2005-03-10T21:52Z

Jag har tidigare använt mod_rewrite och då radat upp alla anrop som skulle skrivas om.
T ex:

```
RewriteEngine On
RewriteRule ^(sida1|sida2|sida3|sida4|sida5)/?$ $1.php
```

för att *sida1* ska pekas om till *sida1.php*.

Nu vill jag istället göra det hela lite mer dynamiskt, och utgick ifrån följande instruktioner:
<http://www.webforum.nu/showthread.php?s=&postid=978302#post978302>
<http://www.webmasterworld.com/forum92/2907.htm>

Jag använder nu

```
# Läs av användarvänliga länkar
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ $1.php [QSA,NC,L]
```

(någon som vill förklara vad \[QSA,NC,L\] betyder?)

Det fungerar bra, när jag försöker komma åt sidor som finns, d.v.s. skriver jag *sida1* kommer jag mycket riktigt till *sida1.php*.
Problemet uppkommer när jag skriver en sida som inte finns, t ex *finnsinte*. Min gissning är att eftersom *finnsinte.php* inte existerar går Apache tillbaka till ruta 1, och gör samma check igen. Efter ett tag inser den att det är lönlöst, och spottar ur sig ett 500-felmeddelande.

Som ett RewriteCond vill jag därför lägga till

```
RewriteCond [ matcha ^([^/]+)/?$ med anropet. om $1.php inte finns: avbryt ]
```

Alternativet är att skicka alla anrop som saknar matchning i filsystemet till ett PHP-skript, men det känns lite för omständligt.

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

## #2 — dectgap, 2005-03-10T22:13Z

Tydligen gick det att göra på följande sätt:

```
RewriteCond %{REQUEST_FILENAME}.php -f
```

Om någon har en smartare lösning på lager tages den gärna emot.

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

## #3 — jarvklo, 2005-03-10T22:28Z

Re: Apache - RegExp i RewriteCond

> **dectgap skrev:**
>
> (någon som vill förklara vad \[QSA,NC,L\] betyder?)

 Kejrå :e

**QSA == "Query String Append"**
Ser till att alla Inparametrar även läggs till i den omskrivna URL:en

**NC == "No Case"**
Regeln är skiftlägesoberoende

**L == "Last rule"**
Anger att omskrivningsmotorn ovillkorligen skall avbrytas efter det att regeln utförts och att inga fler möjligheter skall undersökas.

Mer detaljer och info finns bl.a. i <http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteRule>

:birp

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

## #4 — dectgap, 2005-03-10T23:22Z

Tack för förklaringen :)

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

---

Tråden på webben: https://www.webforum.nu/amne/webbservrar/124141-apache-regexp-i-rewritecond
