Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Apache Modul mod_rewirte konfigurieren

Apache Modul mod_rewirte konfigurieren

PowerChris1978
PowerChris197813.03.0510:22
Hallo,

kann mir jemand einen Tipp geben, wie ich das Appache-Modul mod_rewrite einstelle, dass beim Aufruff von webseite/thema/123.html eine Umwandlung in webseite/thema.php?id=123 erfolgt.

Nachdem was ich bisher zu diesem Thema gefunden habe müsste dies gehen, nur sind reguläre Ausdrücke nicht unbedingt meine Stärke.

Auf meinen lokalen Appache würde ich dies dann in der Datei httpd.conf einstellen und wo muss ich das bei einer gehosteten (z.B. Strato) Webseite eintragen.

Danke.
MfG

Chris
0

Kommentare

stiffler
stiffler13.03.0510:55
Du musst diese regeln in eine datei namens ".htaccess" schreiben. diese Datei legst du idealerweise ins Root-Verzeichnis, also auf gleicher Ebene wie die index.html

In der httpd.conf musst du einstellen, dass das mod_rewrite modul geladen werden soll.

Probiers mal mit folgender varaiante (nicht getestet)

RewriteEngine On

RewriteBase /

#
# Rules
#

^(.*)\/(.*)\/(.*).html$ index.php/$2.php?id=$3&%{QUERY_STRING} [L]

„To understand recursion you need to understand recursion“
0
stiffler
stiffler13.03.0511:01
kleine Korrektur:

^(.*)\/(.*)\/(.*).html$ $1/$2.php?id=$3&%{QUERY_STRING} [L]

Bei Strato müsste es gehen, auf dem lokalen Apache kann es manchmal Probleme mit solchen Regeln geben.
Teste also lieber direkt online (in einem Testverzeichnis)
„To understand recursion you need to understand recursion“
0
PowerChris1978
PowerChris197813.03.0511:39
Danke,

werde ich dann mal testen.
0
PowerChris1978
PowerChris197813.03.0511:42
stiffler
Gilt diese Regel immer nur für das aktuelle Verzeichnis oder auch für die Unterverzeichnisse ?
0
Sebastian
Sebastian13.03.0511:51
stiffler
kleine Korrektur:
^(.*)\/(.*)\/(.*).html$ $1/$2.php?id=$3&%{QUERY_STRING} [L]
Wozu mehrfach (.*)\/ ?

Ein .*\/ tut es auch, dann nimmt er alles bis zum letzten Slash. Außerdem solltest Du den Punkt vor ".html" escapen.
0
PowerChris1978
PowerChris197813.03.0511:53
Ich bekomme jetzt folgenden Fehler:
--
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, service@webmailer.de and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

--

Nachfolgendes habe ich in der Root meines Providers (Strato) eingetragen
Inhalt der .htaccess
DirectoryIndex index.php index.html index.htm

RewriteBase /

#
# Rules
#

^(.*)\/(.*)\/(.*).html$ $1/$2.php?id=$3&%{QUERY_STRING} [L]
0
stiffler
stiffler13.03.0512:05
sebastion

mehrfach, damit er die Pfadangaben als Variablen zur Verfügung hat.
$1=webseite
$2=thema
$3=seite

Woran jetzt der Fehler liegt?
Wie Sebastian sagte, könntest du den Punkt vor html mal eskapen (aus ".html" machst du "\.html")

Was hast du für ein Stratopaket?
In den kleineren kann es sein, dass mod_rewrite nicht erlaubt ist. Wenn in der httpd.conf "AllowOverride" auf "none" gesetzt ist, geht rein garnichts.
„To understand recursion you need to understand recursion“
0
stiffler
stiffler13.03.0512:06
ganz wichtig:
in der htaccess muss _vor_ "RewriteBase" noch folgendes stehen:

RewriteEngine On
„To understand recursion you need to understand recursion“
0
PowerChris1978
PowerChris197813.03.0512:17
Ich habe das Paket "Premium S"

Wie kann ich testen ob ein Rewrite überhaupt gestattet ist ? Oder geht da nur Anfrage an Support ?

Auch mit RewriteEngine On kommt der oben beschriebene Fehler.
0
stiffler
stiffler13.03.0512:25
Lege dir mal einen Ordner "/test" an und lege
eine index.html rein.

Dann schreibst du in die htacces folgendes:

RewriteEngine On
RewriteRule ^.*$ /test/index.html [R]

Diese regel leitet _ALLE_ requests nach /test/index.html um.

Probier das mal, um zu sehen, on mod_rewrite überhaupt erlaubt ist.

Mittels einer phpinfo() könntest du dir auch mal anzeigen, ob das Modul überhaupt geladen wird.
„To understand recursion you need to understand recursion“
0
PowerChris1978
PowerChris197813.03.0512:41
Habe es getestet und er bringt den gleichen Fehler (siehe oben). In der phpinfo() habe ich nichts bzgl mod_rewrite gefunden.

Habe mal eine Anfrage beim Support von Strato gemacht ob dies überhaupt geht.


Chris
0
sr13.03.0513:28
Ich habe jetzt nicht alles gelesen, was ihr hin- und herschriebt, aber Dave Shea hatte die Woche eben solch ein Problem und wurde mit diversen Lösungen versorgt, es lohnt also ein Blick auf

Gruß,
sr
0
sr13.03.0513:30
*hüstel*

Sorry, ich war zu schnell, bei Shea ging es um eine Umwandlung genau in die entgegengesetzte Richtung... aber vielleicht hilft dir das trotzdem weiter.

Gruß,
sr
0
PowerChris1978
PowerChris197813.03.0514:34
sr
Danke. Aber ich bin fast der Überzeugung das Strato diese Funktion nicht unterstützt da auch nichts in der Strato-FAQ steht. Schade eigentlich
0
stiffler
stiffler13.03.0514:37
Dann wechsel doch zu 1&1. Dort funktioniert es tadellos.

und btw, ist 1&1 nicht auch noch günstiger?
„To understand recursion you need to understand recursion“
0
PowerChris1978
PowerChris197813.03.0517:48
stiffler
Dann wechsel doch zu 1&1. Dort funktioniert es tadellos.

und btw, ist 1&1 nicht auch noch günstiger?

Ich werde erst einmal die Antwort vom Strato-Support abwarten. So wichtig ist es ja nicht wenn es nicht gehen sollte.

Wäre nur gut gewesen um auch "Suchmaschienenfreundlich" zu entwickeln.
0
PowerChris1978
PowerChris197823.03.0520:25
Habe heute die Antwort vom Strato-Support erhalten, aber erst nach erneuten nachfragen

Antwort:
Dies ist leider im Rahmen unserer Webhostingpakete nicht möglich. Wir empfehlen Ihnen daher unsere dedizierten Server (http://www.strato.de/server)

--

Schade eigentlich.
0
stiffler
stiffler23.03.0520:32
Noch ein Grund, sich von Strato zu verabschieden.

1&1 und HostEurope kann ich sehr empfehlen!
„To understand recursion you need to understand recursion“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.