Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Mod_Rewrite

Hi Leute,
für unsere Schule habe ich den Auftrag ein kleines oder großes System zu entwickeln, bei dem sich ehemalige Schüler wiederfinden können.
Ich habe schon gute Vorstellungen wie es aussehen könnte...
Nun mein Problem:
ich würde gern alles über eine PHP-Datei laufen lassen, welche dann z.B. ?page=profile oder ?page=profile&name=Hans entgegennimmt.
Damit Alles schön aussieht, soll es möglichst mit /profile/Hans/Wurst umgeschrieben werden.
Ich habe schon viele Tutorials im Netz gefunden, aber immer hat die Backreferenz $1 nur index.php enthalten....(und $2, $3 waren leer)

Ich würde mich freuen, wenn jemand so eine htaccess Datei zusammenstellen würde:
/             => index.php (normal)
/a           => index.php?page=a
/a/b        => index.php?page=a&p1=b
/a/b/c      => index.php?page=a&p1=b&p2=c
/a/b/c/d   => index.php?page=a&p1=b&p2=c&p3=d
/a/b/c/d/e => index.php?page=a&p1=b&p2=c&p3=d&p4=e

Diese 5er-Tiefe reicht. Wäre echt nett, wenn sich jemand die Zeit dafür nehmen würde.
Es reicht ja auch eine 2er Tiefe, ich kanns ja selber fortsetzen...
Danke!


Antworten zu Mod_Rewrite:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

 

Zitat
Es reicht ja auch eine 2er Tiefe, ich kanns ja selber fortsetzen...
 
Ja. Möglich. Aber mit der .htaccess alleine ist es nicht getan. Da muss auch der Aufruf bzw. die Parameterübergabe in den entsprechenden Dateien implementiert sein, sprich Übergabe von "title"-Informationen oder einem Seitentitel aus dem Text-Inhalt der Seite aus dem der Dateiname generiert werden kann. Ohne Ansicht des Quelltextes wird das so aber nichts.

I. d. S.: 
Zitat
ich würde gern alles über eine PHP-Datei laufen lassen, welche dann z.B. ?page=profile oder ?page=profile&name=Hans entgegennimmt.
Diese Datei/en existiert bereits und ist mit Sicherheit funktional??
« Letzte Änderung: 02.04.13, 23:10:53 von PWT »

Das wäre ja das geringste Problem, die Links dann so umzuschreiben, finde ich.
Vllt nicht das geringste aber nicht gerade schwer... :D

Ja, die Datei existiert und nimmt momentan schon ?page=home und ?page=register entgegen.

Quelltext:

<?php
    
if(!isset($_GET["p"])) { $_GET["p"]="home"; }
    if(
in_array($_GET["p"], array(
        
"home",
        
"register"
        
), true)) {
            include 
"modules/".$_GET["p"].".php";
    } else {
        include 
"modules/home.php";
    }
?>

<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<title><?php echo $title?></title>
<link rel="stylesheet" type="text/css" href="css/layout.css" />
<link rel="stylesheet" type="text/css" href="css/classes.css" />
</head>
<body>
<?php include_once("template_pageTop.php"); ?>
<div id="pageMiddle">
    <?php
        
if(function_exists("content")) content();
        else echo 
'<span style="color: red;">ERROR: No Content found!</span>';
    
?>

</div>
<?php include_once("template_pageBottom.php"); ?>
</div>
</body>
</html>

Das in_array() ist ne Sicherheitsfunktion, weil man auf keinen Fall Ungefiltertes includen sollte... (Habt Ihr ne bessere Idee?)

Als Beispiel das home-Modul:
<?php $title='Der Ehemaligentreff...blablabla'; function content() { ?>

<h1>Willkommen</h1>
<h2 style="text-indent: 100px;">Bla Bla Bla</h2>

<?php ?>

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Die Variable prüfen mache ich in so einem Fall immer mit switch. Das ist wie dafür gemacht.

Also ich bin eher nicht so der switch-Freund, weil dieses break meiner Meinung nach den Code unnötig aufbläht, wenn man nur eine Anweisung hat.
Wenn man mehrere Anweisungen im switch hat, mag es gehen...
Aber an der Stelle ist in_array() am sinnvollsten denk' ich.

Kennst du dich vielleicht mit mod_rewrite aus?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Nein, leider nicht. Ich hab da zwar schon mal mit rumgefummelt, aber genau dieses Wort "rumgefummelt" trifft es auch ziemlich genau.

Das einzige, was ich dir geben kann, ist ein Link zur Dokumentation des mod_rewrite Moduls. Aber ich denke, den hast du sicherlich auch schon gefunden und stehst genau wie ich wie ein Ochse vorm Berg.

Genau so geht es mir :D
Ja die Manual is iwie komisch...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi,
dann versuchs mal mit der Erklärung und Anleitung hier:
http://www.peterkropff.de/allgemeines/htaccess/htaccess.htm
Für das Verständnis am besten von Anfang an lesen.

Ok danke. ich leses später.
Habs erst mal "gebookmarkt" :D

Ja!!!
Die Seite war sehr hilfreich :D

Für alle die das Selbe oder Ähnliches vorhaben wie ich:
(Durch ewiges Probieren und etliche 404 und 500)


RewriteEngine On

RewriteBase /et/

# Doppelt hält besser :D
RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)/(.+)/(.+)/(.+)/(.+)/(.+)$ index.php?p=$1&p1=$2&p2=$3&p3=$4&p4=$5&p5=$6 [QSA] [L]
RewriteRule ^(.+)/(.+)/(.+)/(.+)/(.+)$      index.php?p=$1&p1=$2&p2=$3&p3=$4&p4=$5       [QSA] [L]
RewriteRule ^(.+)/(.+)/(.+)/(.+)$           index.php?p=$1&p1=$2&p2=$3&p3=$4             [QSA] [L]
RewriteRule ^(.+)/(.+)/(.+)$                index.php?p=$1&p1=$2&p2=$3                   [QSA] [L]
RewriteRule ^(.+)/(.+)$                     index.php?p=$1&p1=$2                         [QSA] [L]
RewriteRule ^(.+)$                          index.php?p=$1                               [QSA] [L]


« html codessafeMode ausschalten sinnvoll? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Betriebssystem
Das Betriebssystem ist das Steuerungsprogramm des Computers, das als eines der ersten Programme beim Hochfahren des Rechners geladen wird. Arbeitsspeicher, Festplatten, E...

Binärsystem
Unter dem Begriff Binärsystem (oder Dualsystem) versteht man ein Zahlensystem, das lediglich zwei Zustände oder Werte kennt: Null (0) und Eins (1). Es bildet di...

Bus System
Ein Bus ist ein System zur Datenübertragung. Durch einen Bus können mehrere Teilnehmer über eine Leitung miteinander verbunden werden, ohne dabei an der Da...