Und zwar hab ich bei meiner Seite urls mit zb der Form „./?location=home“.
Diese werden so in „./home.html“ umgewandelt, was auch schon funktioniert:
RewriteRule ^(.*)\.html$ ./?location=$1
Auf der Seite kommen jedoch auch urls mit der Form vor „./?location=team&spieler=holger“.
Wie kann ich diese jetzt in „./team/holger.html“ umwandeln?
Ich hätte es damit probiert, das ganze will jedoch noch nicht so ganz funktionieren…
Das liegt ganz klar daran, dass du oben alle Dateien, die mit .html enden schon umleitest, das hiesse dann, du müsstest dieser zweite code weiter oben stehen haben…
Dann dürfte es zu einem 500 error kommen, falls dies der fall ist, musst du es dann do machen:
RewriteRule ^team/(.*)\.html$ ?location=team&spieler=$1 [L]Bin mir nicht ganz sicher, ob das [L] das richtige ist, falls nicht, kannst du es auch mal mit [R] versuchen…
ich bin da auch nicht der mod_rewrite-Experte
RewriteEngine On
RewriteRule ^team/(.*)\.html$ ?location=team&spieler=$1 [L]
RewriteRule ^(.*)\.html$ ?location=$1
funktioniert jedoch immer noch nicht…
Ich bekom aber trotzdem noch einen 404 error… (beachunion.bplaced.net/team.html)
Kann es sein, dass damit nicht auf index.php sonder auf team/index.php umgleitet wird?
RewriteEngine On
RewriteRule ^team/(.*)\.html$ /index.php?location=team&spieler=$1
RewriteRule ^(.*)\.html$ /index.php?location=$1
Damit, und mit dieser url beachunion.bplaced.net/team/holger.html bekomme ich für
echo "location = " . $_GET['location'];
echo "spieler = " . $_GET['spieler'];
die Ausgabe:
[quote]location = /index.php/holger
Notice: Undefined index: spieler in /users/beachunion/www/components/navi.php on line 3
spieler =[/quote]
Verstehe ich irgendwie gar nicht.
Hätte für location eher ‘team’ und für spieler ‘holger’ erwartet
RewriteEngine On
RewriteRule ^team/(.*)\.html$ /index.php?location=team&spieler=$1 [L]
RewriteRule ^(.*)\.html$ /index.php?location=$1
Damit komme ich jetzt nicht mehr auf die 404. Ich bin jedoch jetzt im falschen Verzeichnis. Die CSS lädt erst wenn ich beim Pfad statt “css/style.css” “…/css/style.css” hinschreibe. Dasselbe mit den Bildern. include funktioniert jedoch noch. Muss ich für die css und die Bilder jetzt eine weitere RewriteRule hinzufügen?
mhm das ist meine einzige…die anderen sind alle nur deny,allow anweisungen.
wenn ich bei der css statt dem relativen einen absoluten pfad angebe funktioniert es natürlich. aber es müsste doch auch mit relativen gehen…
Wenn die url beachunion.bplaced.net/team/holger.html ist und der link zum css href=“css/style.css” ist müsste er das ja eigentlich zu /team/css/style.css zusammensetzten…
Ja, natuerlich. Nur hast du dort keine CSS-Datei hinterlegt …
Wenn man mit mod_rewrite verzeichnisartige Strukturen simuliert, dann empfiehlt es sich, alle externen Ressourcen (CSS, JS, Bilder) von der Domainwurzel aus zu referenzieren.
Ok ich hab jetzt statt team/holger.html einfach team-holger.html gemacht. dachte mir schon, dass es an sowas liegt…
edit
Ich hab einige Datein mit der Endung .html im Rootverzeichnis. Diese sind jedoch jetzt nicht mehr aufrufbar, da sie durch diese RewriteRule auf index.php?location=dateiname umgeleitet werden:
Um das zu verhindern hätte ich jetzt diese RewriteCond hinzugefügt:
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^(.*)\.html$ index.php?location=$1 [L]
Dadurch müsste doch zuerst geprüft werden ob die Datei auf dem Server existiert und erst wenn nein die RewriteRule einspringen.