• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

mod_rewrite frage

D

DiVaO

Guest
moin,

ich möchte auf meiner seite gern mod_rewrite nutzen, um die url's übersichtlicher zu machen. mein problem ist allerdings, dass das thema sehr kompliziert ist und ich vergeblich nach einem anständigen und verständlichen tutorial suche. mit regex hab ich's auch nicht so, deswegen denke ich mir es ist einfacher, ich schildere meinen fall kurz und ich glaube jemand, der mit dem thema hinreichend vertraut ist, wird da auch eine lösung parat haben.

also ich habe ganz einfach url's in der form:

www.irgendwas.de/index.php?s=home&p=news
daraus soll
www.irgendwas.de/home/news
werden

www.irgendwas.de/index.php?s=home&p=news&id=3
daraus soll
www.irgendwas.de/home/news/3
werden

das war's auch schon. nun habe ich keine ahnung wie die regel dazu aussehen muss, ich hoffe ihr könnt mir da helfen :)

danke
 
Bitte nutze example.com oder example.org als Beispieldomains.

Ich würde alle eingehenden URLs auf ein zentrales Script umleiten und dort mit PHP zerlegen. Das finde ich einfacher, als zahlreiche Einzelregeln zu definieren.

Code:
RewriteEngine On

# Wenn eine Ressource existiert, liefere sie aus

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

# Sonst leite den Request zur Indexseite weiter

RewriteRule ^.*$ index.php [NC,L]

In index.php:

PHP:
$basePath     = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME);
$requestPath  = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$relativePath = substr($requestPath, strlen($basePath));
 
$pathParts = explode('/', trim($relativePath, '/'));

var_dump($pathParts);
 
Zurück
Oben