[gelöst] Backreference Syntax

URLs umschreiben, umleiten, blocken oder sperren - all das und noch viel mehr kann mit mod_rewrite erreicht werden. Mit regulären Ausdrücken, Conditions und Rules stehst Du auf Kriegsfuss? mod_rewrite macht nicht das was Du willst, oder funktioniert gar nicht? hier bist Du richtig!

Moderatoren: Bob, Super-Mod

[gelöst] Backreference Syntax

Beitragvon Onsemeliot » 25.12.2011 14:02

Ich dachte das wäre sehr einfach und es erscheint mir auch alles logisch, aber anscheinend kapiere ich irgendetwas doch noch nicht:

Meine .htaccess-Datei liegt im selben Ordner, in dem auch alle anderen Dateien liegen. Wenn jemand "http://www.test.com/ordner/xyz" aufruft, soll er auf: "http://www.test.com/ordner/datei.php?n=xyz" weitergeleitet werden.

Ich möchte alles im aktuellen Ordner, das nur die Zeichen "a-z0-9_-" enthält, auf "datei.php" umleiten und die gespeicherte Zeichenkette als Variable: "n" mit übergeben. Wenn ein Punkt in der Zeichenkette vorkommt, darf keine Umleitung passieren, da im selben Ordner auch meine anderen php-Dateien liegen, die direkt mit ihren tatsächlichen Namen aufgerufen werden sollen. (Die Variablen, die ich übergebe, sind Namen, mit denen ich Datensätze aus in einer MySQL-Datenbank abrufe. - Ich arbeite in dem Fall nicht mit IDs weil die Adressen "sprechende Namen" brauchen.)

Ich kann zwar immerhin trotz offensichtlich fehlerhafter Rewrite-Angaben noch zuverlässig alle anderen Seiten aufrufen, aber die Datei: "datei.php" wird nur gefunden, wenn ich sie direkt aufrufe. Es passiert also nicht die gewünschte Umleitung. Ich kapiere nicht, wo mein Denkfehler liegt und bin trotz ausdauernder Suche im Netz langsam mit meinem Latein am Ende.

Kann mir jemand von Euch einen Tipp geben warum meine unten zitierte .htaccess-Datei nicht tut, was ich damit erreichen möchte?

Code: Alles auswählen
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9_-]+)/?$ datei.php?n=$1 [QSA,NC,L]
Zuletzt geändert von Onsemeliot am 27.12.2011 23:58, insgesamt 1-mal geändert.
Onsemeliot
.
.
 
Beiträge: 3
Registriert: 25.12.2011 13:20

Re: Backreference Syntax

Beitragvon Onsemeliot » 27.12.2011 23:58

Ok, ich habe des Rätsels Lösung gefunden:

Das Skript ist fehlerfrei. Es gibt offenbar bloß ein Problem mit der Apache-Konfiguration und dem mod_rewrite-Modul. Auf einem anderen Server läuft das selbe Skript nämlich einwandfrei...
Onsemeliot
.
.
 
Beiträge: 3
Registriert: 25.12.2011 13:20

Re: [gelöst] Backreference Syntax

Beitragvon dwebx » 28.12.2011 20:16

Bei manchen Serverkonfigurationen muss die Datei direkt aus dem Root-Verzeichnis und nicht relativ aufgerufen werden, also ein / vor Datei.php -> /datei.php

Versuch das doch mal bitte. Eine andere Variante ist, dass man die RewriteBase (bestimmtest Unterverzeichnis zum Webspace bei VirtualHost Konfig) setzen muss, das ist aber eher der seltenere Fall.
dwebx
.
.
 
Beiträge: 23
Registriert: 17.12.2011 16:05
Wohnort: Gera

Re: [gelöst] Backreference Syntax

Beitragvon Onsemeliot » 01.01.2012 18:31

Danke für die zusätzlichen Tipps.

Ich musste das in dem Fall allerdings sowieso am anderen Server lösen weil der gewünschte Kurzlink dort eingegeben wird...
Onsemeliot
.
.
 
Beiträge: 3
Registriert: 25.12.2011 13:20


Zurück zu mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron