mod_rewrite & Unterordner |
LordAvalon
Pixelschubser Threadstarter
Beiträge: 8 |
Hallo Leute!
Hoffe, ihr könnt mir helfen.
Meine Seite ist erstmal die index.php . Mit $_GET wird $id und $id2 übertragen. $id steht für den Namen der Datei, die im Hauptteil includet wird und $id2 für den Ordnernamen. Das klappt auch alles soweit: Wenn ich index.php?id=bla&id2=blub aufrufe, wird die Datei blub/bla.php includet. Wenn $id2 nicht übermitelt wird, wird die Datei bla.php aufgerufen.
Nun habe ich in meine .htaccess folgendes geschrieben:
RewriteEngine on
RewriteRule ^(.*)\.html$ index.php?id=$1
Wenn ich nun die Datei bla.html aufrufe, wird index.php?id=bla aufgerufen.
Wenn ich diesen Code nehme...
RewriteEngine on
RewriteRule ^(.*)/(.*)\.html$ index.php?id=$2&id2=$1
... werden die Daten in den Unterordnern prima includet, jedoch funktionieren die Links auf die Daten im gleichen Ordner nicht mehr.
Es soll aber beides funktionieren. Dazu muss also erkannt werden, ob mit $id2 eine Variable übergeben wird. Sollte das nicht der Fall sein, soll die Datei, die sich im gleichen Ordner befindet, aufgerufen werden. Wenn sie übergeben wird, dann die Datei id2/id.php .
Wie mache ich das ? Oder gibt es noch andere Methoden, das zu schaffen ?
|
 Profil
Editieren
Zitieren
|
einstein
Quasselstrippe
Beiträge: 241 |
@mod: in Forum Server-Administration schieben.
In deiner Regular Expression ist folgender Haken:
. steht für jedes beliebige Zeichen als auch ein /, demzufolge macht es wenig Sinn
mit
(jedes beliebige zeichen) / (jedes beliebige zeichen) zu arbeiten.
Siehe auch hier
Diese Nachricht wurde geändert von: einstein |
 Profil
Editieren
Zitieren
|
LordAvalon
Pixelschubser Threadstarter
Beiträge: 8 |
Dank für die schnelle Antwort !
Aber ich brauche doch den Slash als Trennzeichen zwischen Ordnername und Filname.... Wie soll ich das denn genau sonst machen ?
|
 Profil
Editieren
Zitieren
|
einstein
Quasselstrippe
Beiträge: 241 |
Wenn du die links gelesen hättest....
hättest du herausgefunden, dass
du das (.*) bspw. mit
([A-Za-z0-9_]+)
ersetzen könntest
|
 Profil
Editieren
Zitieren
|
LordAvalon
Pixelschubser Threadstarter
Beiträge: 8 |
Ich habe die Links gelesen gehabt. Und ich habe auch das (.*) ersetzt. Aber es funktioniert genauso wie vorher.
Die erstellten HTML Daten in den Unterordnern funktionieren, aber die im gleichen Ordner nicht.
|
 Profil
Editieren
Zitieren
|
einstein
Quasselstrippe
Beiträge: 241 |
Dann brauchst du eben 2 Regeln:
1:
2:
3:
4:
5: |
RewriteEngine on
RewriteRule ^([A-Za-z0-9_]+).html$ index.php?id2=$1
RewriteRule ^([A-Za-z0-9_]+)/([A-Za-z0-9_]+).html$ index.php?id=$2&id2=$1
|
Evtl verstehe ich dein Problem auch nicht ganz: Was bedeutet
jedoch funktionieren die Links auf die Daten im gleichen Ordner nicht mehr. |
|
 Profil
Editieren
Zitieren
|
LordAvalon
Pixelschubser Threadstarter
Beiträge: 8 |
Danke, danke, danke !!
Jetzt klappt es doch ! Hab da wohl irgendwas doch falsch gemacht.
Hab aber noch eine Frage:
Wenn ich nun die Seite index.php?id=bla&id2=$blub durch den Verweis blub/bla.html aufgerufen wird, können logischerweise die Grafiken nicht mehr angezeigt werden, da sich der relative Pfad geändert hat. Die Grafiken befinden sich im Ordner "../images/" und nicht "/images/" .
Wie kriege ich das hin, dass die Grafiken und Links richtig verlinkt sind ?
EDIT:
Hab gerade gemerkt, dass das jetzt logischerweise mit allen Links der Fall ist, da der relative Pfad sich überall verändert hat, aber im Quelltext gleichgeblieben ist.
Diese Nachricht wurde geändert von: LordAvalon |
 Profil
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1502 |
absolute links benutzen
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
LordAvalon
Pixelschubser Threadstarter
Beiträge: 8 |
gibts da keine andere alternative ?
|
 Profil
Editieren
Zitieren
|
Can
Halbgott
Beiträge: 1324 |
LordAvalon schrieb am 17.02.2004 15:54
gibts da keine andere alternative ? |
Keine gute. Setz den absoluten Pfad ( http://domainname.de/) doch als Konstante (mit global), oder Umgebungsvariable (putenv) ...
---
" S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
|
 Profil
E-Mail
Editieren
Zitieren
|
LordAvalon
Pixelschubser Threadstarter
Beiträge: 8 |
Hab ich gemacht und es klappt alles
Hab aber eine andere Frage: Oben steht ja der Code für die .htacces bei einem Unterordner.
Wenn ich jetzt noch einen Unterordner im Unterordner habe, müsste das ganze dann ja so aussehen:
1: | RewriteRule ^([A-Za-z0-9_]+)/([A-Za-z0-9_]+)/([A-Za-z0-9_]+).html$ index.php?id=$2&id2=$1&id3=$3 |
(wenn $id2/$id/$id3.html aufgerufen werden soll.)
Nur klappt es irgendwie nicht ... Seht ihr darin ein Fehler ?
In meiner index.php, hab ich an der Stelle, wo es darauf ankommt, was includet wird, folgendes stehen:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29: |
|
Oder ist darin ein Fehler ?
|
 Profil
Editieren
Zitieren
|