CMS

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

CMS

Beitragvon Fridel F. Strubel » 09.03.2006 00:13

Hallo

Ich habe folgendes Problem:
Ich möchte dass sämtliche Anfragen wie z.b (www.test.de/content/artikel-12.html) auf www.test.de/test/index.php?site=content/artikel-12.html umgeleitet werden. Das klappt soweit auch ganz gut mit der folgenden .htaccess-datei.
Code: Alles auswählen
RewriteEngine on
RewriteBase /test
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)$ index.php?site=$1 [L]


Dateistruktur:
www.test.de
www.test.de/test/
www.test.de/test/index.php
www.test.de/test/cms/
www.test.de/test/cms/content.php
www.test.de/test/img/
www.test.de/test/img/bild.jpg

Erläuterung:
Die datei index.php bindet die nötigen dateien (header/footer, aber auch content.php) ein.

aber wenn ich jetzt irgendwelche links od. grafiken (img/bild.jpg) in der aufgerufenen datei (z.b. in content.php) habe, verweisen die auf www.test.de/content/img/bild.jpg
wenn ich nun ein / vor den link mache (/img/bild.jpg), heisst der pfad www.test.de/img/bild.jpg (statt www.test.de/test/img/bild.jpg)

Ich hoffe, ich hab mich verständlich ausdrücken können :D
Fridel F. Strubel
.
.
 
Beiträge: 3
Registriert: 08.03.2006 11:26

Beitragvon Bob » 09.03.2006 01:16

wenn ich nun ein / vor den link mache (/img/bild.jpg)
Du musst aber ein /test/ davor setzen, sonst bist du ja im root statt im gewünschten Unterordner /test/.

RewriteBase sollte eigentlich das aktuelle Verzeichnis und kein "gewünschtes" wiedergeben. Besser wäre

Code: Alles auswählen
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)$ /test/index.php?site=$1 [L]


oder wenn es unbedingt RewriteBase sein muss, dann

Code: Alles auswählen
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)$ test/index.php?site=$1 [L]


grüße
Robert
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

Beitragvon Fridel F. Strubel » 09.03.2006 08:12

Ich hab meine .htaccess datei jetzt folgendermassen angepasst:

Code: Alles auswählen
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)$ /test/index.php?site=$1 [L]


Aber das ist nicht die Lösung des eigentlichen Problems, den ich führe ja schlussendlich die datei test/index.php aus. Nun möchte ich, dass sämtliche virtuellen pfadangaben von dem ordner test/ ausgehen (dem ordner, indem die auszuführende datei ist). Das tut sie aber nicht, sondern sie nimmt die URL, die in der titelzeile steht (www.test.de/content/artikel-12.html) und bildet daraus die aktuelle position www.test.de/content + allfällige unterordner.
wenn ich aber stattdessen bei den bildern ein / voranstelle, geht der pfad auf www.test.de + allfällige unterordner.

Ich möchte, dass die PHP-dateien beliebig positionierbar sind (ev. für andere projekte) und nicht dass ich dann jeweils sämtliche bildpfade anpassen muss.

Also wenn ich es ganz kurz zusammenfasse; Wie sage ich meinem skript das das Root-verzeichnis www.test.de/test ist und nicht www.test.de
Fridel F. Strubel
.
.
 
Beiträge: 3
Registriert: 08.03.2006 11:26

Beitragvon Bob » 09.03.2006 13:24

Das tut sie aber nicht, sondern sie nimmt die URL, die in der titelzeile steht (www.test.de/content/artikel-12.html)
Weil der Browser das so anfordert, mot mod_rewrite hat damit nichts zu tun. Der Browser fordert den Link so an, wie im Quelltext notiert. Genau deshalb musst du deine Links anpassen, was du ja auch per / davor gemacht hast, nur muss es eben stat / --> /test/ sein.

und nicht dass ich dann jeweils sämtliche bildpfade anpassen muss.
Dann darfst du keine Verzeichnisse nutzen bzw. sie in der URL "entfernen"/austauschen/ändern.
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

Beitragvon Fridel F. Strubel » 09.03.2006 14:34

:(

naja, dann mache ich es einfach mit www.test.de/content-artikel-12.html, so gehts nämlich, da dann der ordner derselbe bleibt.

Trotzdem vielen dank für die Hilfe!
Fridel F. Strubel
.
.
 
Beiträge: 3
Registriert: 08.03.2006 11:26


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron