Kleines Problem mit "mod_rewrite"

mh1001

Lt. Commander
Registriert
Nov. 2003
Beiträge
2.039
Hallo zusammen,

ich habe auf meinem Webserver in einem Verzeichnis die Dateien mitgliedsprofil.php, index.php und eine .htaccess-Datei liegen.
Der Inhalt der .htacces-Datei lautet:
Code:
RewriteEngine on
RewriteRule ^mitgliedsprofil/([0-9]+)/$ mitgliedsprofil.php?mitglied=$1
RewriteRule ^systemkonfiguration/([0-9]+)/$ system_konfiguration.php?system=$1
Nun wird die Datei mitgliedsprofil.php zum Beispiel über folgenden Link aufgerufen:
HTML:
<a href="/clan/mitgliedsprofil/1/" onClick="window.open('/clan/mitgliedsprofil/1/','mitgliedsprofil','toolbar=no,location=no,status=yes,menubar=no,scrollbars=yes,resizable=no,width=580,height=480'); return false;">Mitglieds-Profil</a>
Soweit so gut. jetzt kann ich aber aus unerklärlichen Gründen in der mitgliedsprofil.php nicht auf die Variable $_GET["mitglied"] zugreifen, da diese anscheinend nicht gesetzt wurde.

Woran kann dies liegen? Wenn ich direkt auf die Datei über mitgliedsprofil.php?mitglied=1 zugreife funktioniert dies ohne Probleme. Das "mod_rewrite"-Modul ist aber auch ordnungsgemäß geladen, da die zweite Regel ohne Probleme funktioniert.
Oder habe ich doch irgendwo wieder einen kleinen Fehler eingebaut? ;)


Vielen Dank im schon einmal

mh1001
 
Zuletzt bearbeitet:
mach mal ein print_r($_SERVER); und post hier den output
 
mach doch einfach ne einfache if-abfrage, wenn GET[mitglied] nicht gesetzt wurde, soll dieser wert einfach 1 sein etc

PHP:
if (true==empty($_GET["mitglied"])){
$mitglied="1";
}
 
Ich weis ich hatte schonmal Probleme mit dem Mod_Rewrite ... falls die GET-Parameter fehlen - dann kuck mal ob du mit der Funktion parse_str() etwas anfangen kannst. Mit der kannst du den gleichen Inhalt wie $_GET hat aus einem HTTP-Request parsen.
 
@ Egnima

Hier ist einmal das Array, ich bezweifle aber, dass du daraus etwas sinnvolles entnehmen kannst:
Code:
Array ( [HTTP_HOST] => www.razorbg.de [HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4 [HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 [HTTP_ACCEPT_LANGUAGE] => de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 [HTTP_ACCEPT_ENCODING] => gzip,deflate [HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7 [HTTP_KEEP_ALIVE] => 300 [HTTP_CONNECTION] => keep-alive [HTTP_REFERER] => http://www.razorbg.de/neuigkeiten/meldung/12/ [HTTP_COOKIE] => phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A32%3A%2215625e09c64a904691b0331b9bc4b98c%22%3Bs%3A6%3A%22userid%22%3Bi%3A2%3B%7D; PHPSESSID=1uuas5l2knhkblcnsrh6qph331 [PATH] => /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin [SERVER_SIGNATURE] => Apache/2.0.52 (Debian GNU/Linux) PHP/5.0.3 DAV/2 Server at www.razorbg.de Port 80 [SERVER_SOFTWARE] => Apache/2.0.52 (Debian GNU/Linux) PHP/5.0.3 DAV/2 [SERVER_NAME] => www.razorbg.de [SERVER_ADDR] => 80.237.132.25 [SERVER_PORT] => 80 [REMOTE_ADDR] => 217.187.61.201 [DOCUMENT_ROOT] => /is/htdocs/wp1009845_NW0WCH585C/razorbg/ [SERVER_ADMIN] => webmaster@wp1009845.wp018.webpack.hosteurope.de [SCRIPT_FILENAME] => /is/htdocs/wp1009845_NW0WCH585C/razorbg/clan/mitgliedsprofil.php [REMOTE_PORT] => 4354 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => [REQUEST_URI] => /clan/mitgliedsprofil/1/ [SCRIPT_NAME] => /clan/mitgliedsprofil.php [PATH_INFO] => /1/ [PATH_TRANSLATED] => /is/htdocs/wp1009845_NW0WCH585C/razorbg/1/ [PHP_SELF] => /clan/mitgliedsprofil.php/1/ [argv] => Array ( ) [argc] => 0 )

@ Crunchtime

Das mit der "1" war nur ein Beispiel. Der Code wird an verschiedenen Stellen dynamisch generiert. Deswegen sollte er nach Möglichkeit auch korrekt übergeben werden.

MfG mh1001

/Edit: Naja, das Selstsame ist ja, dass es bei der zweiten RewriteRule mit der Systemkonfiguration einwandfrei läuft und diese auch sonst keine Probleme bereiten. Aber warum geht es ausgerechnet hier nicht? :confused_alt:

/Edit2: Die Funktion werde ich mir auf jeden Fall morgen einmal näher anschauen. Danke für den Tipp. ;)
 
Zuletzt bearbeitet:
Die Funktion kannst du vergessen :(

Dein Problem ist, dass PHP nicht mit der von dir gewählten URL aufgerufen wird, sondern bekommt vom apache die Parameter:
Request: /clan/mitgliedsprofil/1/

Da muss was mit dem rewrite nicht passen.
 
Stimmt, das hatte ich ja ganz übersehen.
Aber woran kann dies nun liegen?
Oder ist dies eindeutig auf eine Fehleinrichtung bzw. einen Fehler des "mod_rewrite"-Moduls zurückzuführen?

MfG mh1001
 
Zuletzt bearbeitet:
Lies die Id eben aus der übergebenen URL ($_SERVER['REQUEST_URI']) aus.

Und zwar (ungefähr) so:
PHP:
<?php
$regexp['gid'] = preg_match ( "#/(([0-9])*)/?$#i" , $_SERVER['REQUEST_URI'] , $found );
$Id = $found[1];
?>
 
Vielen Dank für den Tipp. :daumen:

Im Moment sieht das ganze nun bei mir so aus und funktioniert unglaublicherweise sogar ;) :
PHP:
$mitgliedsauswahl = substr($_SERVER['REQUEST_URI'], 22, -1);
Auch wenn die Technik natürlich etwas unschön ist - bis ich das Problem irgendwie klären kann bleibt es so. ;)

MfG mh1001
 
Zuletzt bearbeitet:
Zurück
Oben