mod_rewrite Regel ignoriert

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

mod_rewrite Regel ignoriert

Postby davsch » 21. June 2006 15:41

Hallo,

seit dem Update auf die aktuelle Version (1.5.3a) werden meine mod_rewrite-Regeln nicht mehr richtig angewendet. Auf der alten Version lief alles problemlos. Die .htacces ist nicht verändert worden. In der httpd.conf sind zum Testen alle Overrides auf "All" gestellt und LoadModule rewrite_module auskommentiert.

Einfache Regeln der Art

Code: Select all
RewriteRule ^deutsch/markt\.html$            deutsch/markt.php


werden ausgeführt. Sobald ein Parameter angehangen wird, findet keine Übergabe mehr statt!

Hier ein Beispiel:
Code: Select all
RewriteRule ^deutsch/markt-(.*)\.html$         deutsch/markt.php?page=$1


und der rewrite-Log:

Code: Select all
127.0.0.1 - - [21/Jun/2006:16:34:13 +0200] [localhost/sid#28fdc0][rid#e0d070/initial] (2) [perdir D:/Programme/xampp/htdocs/meinedomain/] rewrite 'deutsch/markt-segment1.html' -> 'deutsch/markt.php?page=segment1'
127.0.0.1 - - [21/Jun/2006:16:34:13 +0200] [localhost/sid#28fdc0][rid#e0d070/initial] (2) [perdir D:/Programme/xampp/htdocs/meinedomain/] strip document_root prefix: D:/Programme/xampp/htdocs/meinedomain/deutsch/markt.php -> /meinedomain/deutsch/markt.php
127.0.0.1 - - [21/Jun/2006:16:34:13 +0200] [localhost/sid#28fdc0][rid#e0d070/initial] (1) [perdir D:/Programme/xampp/htdocs/meinedomain/] internal redirect with /meinedomain/deutsch/markt.php [INTERNAL REDIRECT]
127.0.0.1 - - [21/Jun/2006:16:34:13 +0200] [localhost/sid#28fdc0][rid#e0bca8/initial/redir#1] (1) [perdir D:/Programme/xampp/htdocs/meinedomain/] pass through D:/Programme/xampp/htdocs/meinedomain/deutsch/markt.php


Ich habe mir mit print_r($_POST) alle Parameter ausgeben lassen, aber es wurden keine übergeben.

Notfalls würde ich wieder auf eine alte Version downgraden. Kann man sich alte Versionen noch irgendwo downloaden?

Gruss

David
davsch
 
Posts: 4
Joined: 21. June 2006 15:14

Postby Wiedmann » 21. June 2006 16:06

Ich habe mir mit print_r($_POST) alle Parameter ausgeben lassen, aber es wurden keine übergeben.

Die Werte im QueryString landen im $_GET-Array und nicht im $_POST-Array.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby davsch » 21. June 2006 16:36

Sorry, mein Fehler.
Nichtsdestotrotz besteht das Problem weiterhin.
Vorher musste ich ja auch nicht immer die Variabe aus $_GET auslesen und zuweisen. Sprich:
    meinedomain.de/markt-parameter.html

wurde ja bisher umgeschrieben in
    meinedomain.de/markt.php?page=parameter


wobei parameter nach meiner Regel (s.o.) $1 entspräche.

Wenn ich jetzt mit

Code: Select all
$page = $_GET["page"];

die Variable setze, dann klappt's. Warum aber nur auf diesem Umweg???

Gruss
davsch
 
Posts: 4
Joined: 21. June 2006 15:14

Postby davsch » 21. June 2006 17:24

So mittlerweile bin ich soweit, dass ich sagen kann, dass es nicht an mod_rewrite liegt!

Testweite habe ich folgendes gemacht:

PHP-Datei:
Code: Select all
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
Hallo <?php echo($var);?>
</body>
</html>


Aufruf: http://localhost/david/test.php?var=david
Ausgabe: Hallo

PHP-Datei:
Code: Select all
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
Hallo <?php $var = $_GET["var"]; echo($var);?>
</body>
</html>


Aufruf: http://localhost/david/test.php?var=david
Ausgabe: Hallo david

Also werden die Variablen nicht richtig ausgelesen, wenn ich sie an den URL anhänge. Hat das etwas mit REGISTER_GLOBALS zu tun?
davsch
 
Posts: 4
Joined: 21. June 2006 15:14

Postby Wiedmann » 21. June 2006 18:55

Wenn ich jetzt mit
$page = $_GET["page"];
die Variable setze, dann klappt's. Warum aber nur auf diesem Umweg???

Welcher Umweg? Genau (nur) so wird es doch im PHP-Manual beschrieben?

BTW Umweg: Für den sorgst doch du. Du musst ja den Inhalt des GET-Arrays nicht erst einer Variablen zuordnen sondern arbeitest natürlich im Script mit dem GET-Array. (Mal ganz von dem Nachteil abgesehen, dass z.B. diese Variable in Funktionen nicht existent ist, $_GET aber schon)

Aber es könnte ja auch sein, dass zu der Zeit als du PHP lerntest, erst PHP3 aktuell war? Da war alles noch etwas anders und PHP auch oft unsicher (weil zufällig angehängte Werte beim Scriptaufruf plätzlich Variablenwerte im Script verändert hatten). "register_globals" gibt es daher zum Glück mit der nächsten PHP-Version nicht mehr.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby davsch » 21. June 2006 23:15

Das wundert mich aber. Bisher hat alles wunderbar geklappt. Sowohl lokal (PHP4.4.2) als auch auf dem Webserver (PHP4.4.0).

Im Skript habe ich über

meinedomain.de/index.html?variable=inhalt

global auf die Variable $variable zugreifen können.
Es wäre ziemlich aufwendig, alle Seiten zu überarbeiten und auf den Zugriff über das GET-Array umzustellen. Ich werden deswegen zunächst versuchen, die alte Version des XAMPP-Pakets zu installieren. Da hatte ich bisher nie Probleme.
davsch
 
Posts: 4
Joined: 21. June 2006 15:14

Postby Wiedmann » 21. June 2006 23:28

Das wundert mich aber.

Aber nur wenn man das PHP-Manual nicht liest ;-)

Im Skript habe ich über ... global auf die Variable $variable zugreifen können.

Das ist eigentlich schon seit ein paar Jahren standardmässig bei PHP deaktiviert. Der XAMPP war halt auch hier lange Zeit kein Vorbild...

Ich werden deswegen zunächst versuchen, die alte Version des XAMPP-Pakets zu installieren.

Auch eine Lösung. Da wir aber schon vorher mal beim Manual waren: Dort findest du die Lösung, wie man das von dir gewünschte Verhalten wieder herstellt (noch herstellen kann).
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby deepsurfer » 22. June 2006 11:09

Ein schöne Erklärung dazu, die so auch in der PHP-Dokumentation zu finden ist und auf die Wiedmann mittlerweile zweimal drauf hingewiesen hat.

http://faq.kwm-web.info/doku.php?id=php ... er_globals
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 8 guests