Seite 1 von 1

Mod_Rewrite Verzeichniss auf .php

Verfasst: 18.10.2007 16:24
von terminatorx120
Hallo,
ich möchte es schaffen, dass man in der URL ein Verzeichniss angibt und dann durch mod_rewrite der .htaccess eine .php Datei ausgeführt wird.

Genau genommen soll es so aussehen:

URL:

Code: Alles auswählen

http://www.keepgaming.de/video/52

zu:

Code: Alles auswählen

http://www.keepgaming.de/video.php?id=52

Ich habe natürlich vorher gründlich gegooglet und eigentlich kann ich auch ein wenig mit Mod_Rewrite umgehen, php dateien zu html machen un Co., aber das mit dem Verzeichniss will nicht sorecht funktionieren.
Ich hatte es schon beinahe geschafft, aber da wurde das template nicht geladen und er dachte wirklich er wäre in dem Verzeichniss und wollte auch alle links auf z.B. /video/video.php?id=52 schicken.

Kennt sich jemand aus?

bisheriger Versuch:

Code: Alles auswählen

RewriteEngine  on 
RewriteRule ^http://www\.keepgaming\.de/video/$ http://www.keepgaming.de/video.php [L]

RewriteRule /video/(.*) /video.php?id=$1 [PT]
Ich benutze phpBB3.

edit: PS: könnte mir jemand noch einmal den Inhalt der normalen .htacces sagen, ich habe sie dummerweise überschrieben. Vielen Dank

Verfasst: 18.10.2007 17:39
von gn#36
Das ist nicht ganz so einfach. Der Browser "denkt" er befindet sich im Verzeichnis /video/ und schickt daher alle relativen Anfragen so ab, dass sie sich auf dieses Verzeichnis beziehen. Du kannst nun entweder alle relativen Pfade in der Seite umbauen, oder du fügst eine Art Catchall ein. Hierzu musst du die Rewrite Rule noch ein wenig spezifizieren (was sowieso sinnvoll ist .* ist nicht besonders effizient):

Code: Alles auswählen

RewriteRule /video/$ /video.php [L]
RewriteRule /video/([0-9]+)$ /video.php?id=$1 [L]
RewriteRule /video/(.*) /$1 [L]
Für die normale .htaccess könntest du dir einfach einen Blick in eines der Downloadpakete gönnen ;)

Verfasst: 18.10.2007 20:38
von terminatorx120

Code: Alles auswählen

Not Found

The requested URL /video/2 was not found on this server.
?

Code: Alles auswählen

options +FollowSymLinks
RewriteEngine  on 
RewriteRule /video/$ /video.php [L]
RewriteRule /video/([0-9]+)$ /video.php?id=$1 [L]
RewriteRule /video/(.*) /$1 [L] 

Verfasst: 20.10.2007 10:30
von gn#36
hm.

Vielleicht doch besser so:

Code: Alles auswählen

options +FollowSymLinks
RewriteEngine  on
RewriteBase /
RewriteRule ^video/$ /video.php [L]
RewriteRule ^video/([0-9]+)$ /video.php?id=$1 [L]
RewriteRule ^video/(.*) /$1 [L]
Wenn sich das alles auf irgend einen Unterordner auf den Server beziehen soll (also z.b. forum/video/2 oder so), dann solltest du die RewriteBase entsprechend setzen auf den realen Ordner.

Als Bsp mal ein funktionierender Ausschnitt aus meiner .htaccess:

Code: Alles auswählen

RewriteEngine On
Options +FollowSymLinks
RewriteBase /RGN_Homepage/

RewriteRule ^special/([^/]*)/news/([0-9]+)\.html 	/RGN_Homepage/index.php?section=special&special=$1&area=news_detail&newsid=$2 [NC,L]
RewriteRule ^special/([^/]*)/news/?				/RGN_Homepage/special/$1/ [R=301]
 

Verfasst: 20.10.2007 18:42
von terminatorx120
SUPER!
Funktioniert!!

Vielen Dank!

Hier der Beweis:
http://www.keepgaming.de/video/52