Wer kann mir helfen

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

Wer kann mir helfen

Beitragvon mad_max » 03.06.2009 14:37

Hallo...

ich habe folgendes in meiner htaccess Datei stehen:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L]

RewriteRule ^fotos/ - [L]

RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/$ index.php?id=$1&id2=$2&id3=$3&id4=4 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ index.php?id=$1&id2=$2&id3=$3 [L]
RewriteRule ^([^/]*)/([^/]*)/$ index.php?id=$1&id2=$2 [L]
RewriteRule ^([^/]*)/$ index.php?id=$1 [L]

da ist sicher einer Fehler drin, denn wenn ich an einer steller abfrage

if($_GET["id"] == "xxx")
{
if(isset($_GET["id2"]))
{
$_SESSION["xxx"] = $_GET["id2"];
}
}

speichert er die $_SESSION["xxx"] so wie gewollt aber wenn ich auf eine andere Seite gehe speichert er eine x-belibige css datei in der Session.

Ich wäre wirklich dankbar für jede Hilfe
mad_max
.
.
 
Beiträge: 6
Registriert: 03.06.2009 14:30

Beitragvon Gumbo » 03.06.2009 15:04

Setze mal folgende Regel an erster Stelle:
Code: Alles auswählen
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon mad_max » 03.06.2009 15:16

Hallo und danke für die rasche Antwort,

leider gibt es dann immernoch den gleichen Fehler!
mad_max
.
.
 
Beiträge: 6
Registriert: 03.06.2009 14:30

Beitragvon mad_max » 03.06.2009 15:27

Ich habe gerade festgestellt das wenn ich die URL mit einen / abschließe funktioniert es.
Wie kann ich das aber in der htaccess so ändern das es mit und ohne / funktioniert?!
mad_max
.
.
 
Beiträge: 6
Registriert: 03.06.2009 14:30

Beitragvon Gumbo » 03.06.2009 15:49

Setz dazu die abschließenden Schrägstriche als optional („/?$“). Du solltest dich aber besser für eine Schreibweise entscheiden (mit oder ohne abschließenden Schrägstrich) und davon abweichende URLs korrigieren.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon mad_max » 03.06.2009 15:54

Ok... Wie kann ich dann die url so umleiten dass sie immer eine abschließenden Schrägstrich hat?!
mad_max
.
.
 
Beiträge: 6
Registriert: 03.06.2009 14:30

Beitragvon Gumbo » 04.06.2009 07:18

Dazu musst du lediglich die erste Regel wie oben genannt durch das Flag „R=301“ ergänzen.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon mad_max » 04.06.2009 07:31

Das habe ich schon versucht, nur dann kann ich keine POST-Daten auslesen...
Kann das vielleicht auch mit der Servereinstellung von Xampp zu tun haben...?!
mad_max
.
.
 
Beiträge: 6
Registriert: 03.06.2009 14:30

Beitragvon Gumbo » 04.06.2009 09:44

Die Links/URLs, die du selbst setzt, sollten schon richtig sein. Also in dem Fall mit abschließendem Schrägstrich.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier

Beitragvon mad_max » 05.06.2009 11:06

Jetzt habe ich aber noch ein Problem.

Wenn ich die URL`s mit einen abschließenden Schrägstrich setzte funktionieren meine AJAX-Anwendungen nicht mehr (Error 404), wenn ich aber den abschließenden Schrägstrich weglasse funktionieren sie wieder.
Ich bin langsam am verzweifeln.

Was mache ich falsch.
Hier noch mal der Code:

Code: Alles auswählen
RewriteEngine   on

RewriteCond     %{REQUEST_FILENAME}   !-d
RewriteCond     %{REQUEST_FILENAME}   !-f

RewriteCond    %{REQUEST_URI} ^/[^\.]+[^/]$

RewriteRule    .*[^/]$ %{REQUEST_URI}/ [L]

RewriteRule    ^fotos/ - [L]

RewriteRule    ^([^/]+)/([^/]+)/([^/]+)/$       index.php?id=$1&id2=$2&id3=$3 [L]
RewriteRule    ^([^/]+)/([^/]+)/$             index.php?id=$1&id2=$2 [L]
RewriteRule    ^([^/]+)/$                   index.php?id=$1 [L]
mad_max
.
.
 
Beiträge: 6
Registriert: 03.06.2009 14:30

Beitragvon Gumbo » 05.06.2009 17:13

Du musst wissen, dass relative URLs immer von der URL des aktuellen Dokuments aus aufgelöst werden, falls keine abweichende URL als Basis-URL angegeben wurde.
Das heißt in deinem Fall, dass wenn du den URL-Pfad deiner Ressourcen änderst, ändert sich damit auch der Basis-URL-Pfad und damit auch alle davon aus aufgelösten relativen URL-Pfade. Ein „bar“ oder „./bar“ wird wenn es von „/foo/“ statt „/foo“ aufgelöst wird zu „/foo/bar“ statt „/bar“. Das musst du berücksichtigen und entweder die URL-Pfad-Angaben anpassen (etwa absolute URL-Pfade, also „/bar“ statt „bar“ oder „./bar“) oder die Basis-URL ändern (siehe BASE-HTML-Element), wobei letzteres aber Nebenwirkungen hat.
Markus Wulftange
Gumbo
Moderator
Moderator
 
Beiträge: 5019
Registriert: 07.01.2005 01:18
Wohnort: Trier


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

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

cron