modrewrite erste schritte

Godstyle

Erfahrenes Mitglied
Hallo,

ich bin ja in einem anderen Thread hier ein Paar fragen am klären bzgl meiner Seite, dort ist etwas von mod_rewrite gefallen, das klingt sehr interessant und ich habe mich seid dem damit beschäftigt.

Stehe sicher vor einem Anfängerfehler, habe lange gegoogelt und an 2 Rechnern getestet.

Der eine zeigt mir egal was ich mache immer fehlercode 500 an. Daher hab ich mich von dem verabschiedet und befasse mich da später mit dem Probem.

Zuächst habe ich alles geprüft in der php info nach gesehen ob es läuft und ja, mod rewrite läuft.
Dann habe ich ein Script gesehen:

RewriteEngine On
RewriteRule ^ http://www.adino.at [R,L]

Dies soll bewirken das ich auf diese Seite weitergeleitet werde und sollte nur Prüfen ob es richtig arbeitet. Und ja das macht es auch.

Nun aber zu meinem Problem, ich habe einen link mit 3 Parametern:

http://localhost/owoffd2/index.php?lnav=home&mnav=meinbereich&vnav=com

ich stelle mir eine anzeige vor die so aussieht:

http://localhost/owoffd2/com/home/meinbereich

das script dazu ist:

Code:
RewriteEngine On
RewriteBase /
RewriteRule ^dir/(.*)/(.*)\.(.htm|.html)$ /$2/$3.$1 [R=301,L]

Das script macht jedoch gar nicht und lässt den link unverändert auch in der error logs ist nichts zu finden.

Selbst eine ganz einfache umwandlung wie:

Code:
RewriteEngine on
RewriteRule ^(.*).html$ $1.php

erzeugt kein ergebnis, sprich keinen Fehler und keine veränderung.

Ich habe heute erst damit angefangen bin also absoluter anfänger und nichtmal sicher ob mod rewrite wirklich richtig läuft.

Wo liegt mein Fehler was kann ich noch prüfen und wie gehe ich hier mit Problemen um? Ich scheitere ja grade an einem Tutorial.
 
Es wird nichts direkt an der URL geändert, falls du das erwartest. In deinem beispiel mit dem html->php switch würde bei Eingabe von localhost/datei.html einfach nur localhost/datei.php aufgerufen werden. In der URL-Leiste steht aber immernoch datei.html dann ;)

Zu dem Link mit drei paramtern:
Code:
RewriteEngine on
RewriteBase /owoffd2
RewriteRule ^/(\w+)/(\w+)/(\w+)$ index.php?lnav=$2&mnav=$3&vnav=$1

Für eventuelle Fehler konsultiere das error.log
 
Danke für die nächtliche antwort, das mit html und php hab ich nun dank dir verstanden ;)

zu deinem 2ten vorschlag, unverändert, error log zeigt keinen fehler an. und der Link oben steht nachwievor dort
 
Hi

dazu noch was: R=301
Das 301 wäre eine browserseitige Umleitung.
Vermutlich nicht ganz das, was du willst.
 
Ich habe es so aus einem Tutorial übernommen, ich gestehe ja nicht wirklich viel zu wissen kam ja erst durch dich darauf ;)
 
Modrewrite-Syntaxfehler sind mit vielen Kompilierungs-Configs genug,
um 500er-Fehler zu liefern, sollte also kein grober Fehler da sein
(zumindest glaub ich das. Seit dem ich es das letzte Mal kompiliert
hab ist schon eine Weile vergangen)

Zu dem Nichts-Passieren:
Was steht denn in den anderen Logs, was genau aufgerufen wird, wenn du es versuchst?
Was steht in den Haupteinstellungen (httpd.conf) über AllowOverride?

Zu der Sache mit Mysql-PN antworte ich einfach mal hier
(man kanns im Forum nicht oft genug sagen :D):
Die mysql_ - Funktionen sind von den Entwicklern praktisch aufgegeben.
Bedeutet:
a) Falls neue Sicherheits/Funktionsprobleme bekannt werden
braucht man sich nicht auf Updates verlassen.
b) Falls sich PHP irgendwann so ändert, dass der Programmcode
von mysql- auch Anpassungen braucht
wird das auch niemand tun -> Dann gehts eben gar nicht mehr.

Zurzeit ists noch bei PHP dabei, damit alte Programme (die es verwenden) weiter funktionieren.
Irgendwann in nicht zu ferner Zukunft wirds aber ganz wegkommen
Dann wirds zwar sicher noch irgendwo zu laden sein,
aber umständlicher zu installieren und bei Hostern nicht mehr vorhanden
(wo man ja oft keinen Vollzugriff zum Installieren hat)

Die neuere Variante (Klassen statt Einzelfunktionen, neue/mehr Funktionen...)
nennt sich Mysqli.
Alternativ gibt es auch PDO, das von der verwendeten DB relativ unabhängig ist
(zumindest kann man Code mit PDO mit wenig Aufwand auf eine andere DB-Software umstellen)
 
ok erstmal erneut auch hier danke, PDO steht somit mit auf der liste was ich mir ansehen werde ;)

Also zur sache, in der httpd.conf habe ich gesucht nach AllowOverride habe es 3 mal gefunden und es steht wie folgt dort: "AllowOverride All" in allen 3 fällen.

zu den logs. habe nur in den xampp/apache/logs/error.txt nach gesehen, gibt es da noch andere die für rewrite wichtig sind, wenn ja, wie gelange ich an diese, denn im Tut stand das ich dort fündig werde.
 
So, heute gab es eine Nachtschicht, das ganze hat mich absolut nicht losgelassen, denoch habe ich für mich Persönlich keine Fortschritte erzielen können.

Ich habe xampp komplett samt aller dienste gelöscht und neu Installiert für den Fall das ich irgendwo was falsches mal umgestellt habe.

Dann bin ich in die httpd.conf unter folgendem Pfad: C:\xampp\apache\conf

dort steht ingesamt 3 Mal AllowOverride beim obersten auf None und bei den unteren beiden auf All (wie im tutorial angegeben sollte es passen)

Nun kam mein erster Test ob es reagiert.

Habe einen Ordner (test) erstellt, in diesem die .htaccess mit folgendem code:

Code:
RewriteEngine On
RewriteRule ^ http://www.adino.at [R,L]

habe nun den link aufgerufen:
http://localhost/lernen/test/1/
der Order 1 existiert nicht

Ich wurde auf die angegebene Domain weitergeleitet. (laut tutorial sollte somit mod_rewrite funktionieren)

So dann auf zu Schritt 2 Ordner Test und die Darin enthaltene Datei gelöscht.

im Ordner lernen eine Datei erstellt (seite.php)

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<a href="?id=1">Link 1</a><br />
<a href="?id=2">Link 2</a><br />
<a href="?id=3">Link 3</a><br />
<?php 
if(!empty($_GET['id'])) {
	echo $_GET['id'];
}
?>

</body>
</html>

dazu dann folgende .htaccess:

Code:
RewriteEngine on 
RewriteRule ^seite_([0-9]+).html$ seite.php?id=$1

Das ergebnis wenn ich die Seite aufrufe und einen Link anklicke:

der link: http://localhost/lernen/seite.php?id=3

die ausgabe:

HTML:
Link 1
Link 2
Link 3
3

in den error logs unter: C:\xampp\apache\logs habe ich nicht gefunden.

So, ich habe nun jeden einzelnen Schritt wiedergegeben und komme wirklich mit den Tutorials nicht mehr weiter, habe ja nun ganz von vorne begonnen und brauche eure hilfe.

LG
 
Zurück