Problem: Mod Rewrite (RegEx) und Includes

shorty

Erfahrenes Mitglied
Guten Tag,

vorweg möchte ich sagen, dass ich auf dem Gebiet Mod Rewrite ein absoluter Neuling bin und gerade mal einwenig damit rumspiele. Nun hatte ich vor, meine Url einwenig umzuwandeln, nur stoße ich dann auf folgendes Problem:

Ich erhalte nun in meinem Skript einen Fehler, und zwar genau dort, wo ich eine Funktion aus einer Klasse aufrufe. Ich gehe davon aus, dass PHP die Datei nicht findet, die ich in der index.php includet habe.

Meine Includes sehen folgendermaßen aus:

index.php
Include der Klasse
Include der weiteren Skripte wie Gästebuch, News usw... als Switch-Case Funktion

Muss ich bei Mod Rewrite die Includes in irgendeiner Weise beachten?
 
Wenn du die Pfade beim Includen nicht mit http:// am Anfang angegeben hast, liegt es nicht an dem rewriten...

Das Umschreiben von Serveranfragen betrifft nur HTTP-Anfragen...das includen wäre in dem Fall jedoch ein Zugriff im Dateisystem, worauf das Rewriten keinen Einfluss hat.
 
Du solltest absolute Pfadangaben (/foobar) den relativen (../foobar) vorziehen. Auch das ist eine mögliche Fehlerquelle.
 
Meine RewriteRule sieht zurzeit folgendermaßen aus:

Code:
RewriteEngine On
RewriteRule ^/([_a-z*])/([_a-z*])/([_a-z*])/([0-9])/([0-9]+)/$ index.php?mode=$1&action=$2&admin=$3&id=$4&commentid=$5

Ohne Mod Rewrite habe ich die Startseite über index.php?mode=start aufgerufen.
Mit rufe ich sie über http://www.xxx.de/start/ auf, aber dann tritt halt der Fehler auf, dass die Funktion, die ich in Zeile 3 aufrufe nicht gefunden werden kann.

Absolute Pfadangaben verwende ich ebenfalls.
 
Mit einer Switch-Case Funktion:

PHP:
<?php
switch($_GET["mode"]) {
	case "splash":
		include("./splash.php");
	break;
	case "start":
		include("./start.php");
	break;
	case "about":
		include("./about.php");
	break;
	case "topic";
		include("./topic.php");
	break;
	case "impressum":
		include("./impressum.php");
	break;	
}
?>
 
Über die Funktion include():

PHP:
<?php
include("./class/class.db.php");
include("./class/class.dedatetime.php");
include("./func/func.function.php");
include("./config.inc.php");
?>
 
Das sind aber relative und keine absoluten Pfadangaben. Probier das Ganze mal mit absoluten Pfadangaben und vielleicht noch der require_once-Anweisung statt der einfachen include-Anweisung:
PHP:
<?php

	require_once '/class/class.db.php';
	require_once '/class/class.dedatetime.php';
	require_once '/func/func.function.php';
	require_once '/config.inc.php';

	…

?>
 
Hab nun reuqire_once() verwendet und ebenfalls absolute Pfadangaben:

Was ist btw. der Unterschied zwischen "./" und "/"?

PHP:
<?php
require_once("class/class.db.php");
require_once("class/class.dedatetime.php");
require_once("func/func.function.php");
require_once("config.inc.php");
?>


edit: Ganz vergessen zu erwähnen, dass ich immernoch denselben Fehler erhalte :)
 
Zuletzt bearbeitet:
Zurück