RewriteRule kommt nicht an wo es hin soll
Franky
- htaccess
- webserver
Hallo,
ich habe meine Seite auf einem raspberrypi laufen.
Die Seite selber kann ich mit http://raspberrypi/webseite aufrufen.
Jetzt erstelle ich gerade eine htaccess, doch irgendwo ist der Wurm drin
alle Seite etc liegen im Verzeichnis
http://raspberrypi/webseite
die URL soll
http://raspberrypi/webseite/artikel/erster_beitrag.html
heißen.
Dieser soll dann an folgende Seite geleitet werden
http://raspberrypi/webseite/index.php
Das versuche ich mit folgendem zu bewerkstelligen
RewriteEngine On
RewriteRule ^artikel/([a-z_-]+).html$ index.php?artikel=$1 [L]
doch ich bekomme die Antwort
Not Found
The requested URL was not found on this server.
Hallo Franky,
ich bin nicht so der Oberindianer, aber diese Hinweise hätte ich.
In welchem Ordner liegt die .htaccess Datei? Gleicher Ordner wie die index.html?
Ist mod_rewrite generell aktiv? Ich weiß nicht, ob man das in der httpd.conf noch einrichten muss
Das Apache-Handbuch schreibt:
Per-directory Rewrites
The rewrite engine may be used in .htaccess files and in <Directory> sections, with some additional complexity.
To enable the rewrite engine in this context, you need to set "RewriteEngine On" and "Options FollowSymLinks" must be enabled. If your administrator has disabled override of FollowSymLinks for a user's directory, then you cannot use the rewrite engine.
Fettschrift von mir. Ist FollowSymLinks aktiv?
Rolf
also es ist aktiv, den
RewriteRule ^(.*).html index.php?test=$1 [L]
funktioniert
Dann lass Dir in der index.php mal $_GET['test']
anzeigen.
Rolfs Frage ...
In welchem Ordner liegt die .htaccess Datei?
... beantwortet Deine Frage.
Aber wie soll ich mir die $_GET['test'] anzeigen lassen, wenn die Seite nicht gefunden wird.
Franky
Eben hast Du noch behauptet, es gänge.
Dann lass Dir doch mal in einer 404.php $_SERVER
anzeigen…
Wahrscheinlich ist es korrekt, aber nicht gewollt.
RewriteEngine On
RewriteRule ^artikel/([a-z_-]+).html$ index.php?artikel=$1 [L]
die .htaccess liegt im Startverzeichnis
http://raspberrypi/webseite
und die RewriteRule will die index im Verzeichnis
http://raspberrypi/webseite/artikel
auffrufen.
Sie soll aber eigentlich im Startverzeichnis
http://raspberrypi/webseite
die index aufrufen.
Also wird die Datei in einem falschen Verzeichnis aufgerufen
Frankie
n'Abend,
RewriteEngine On RewriteRule ^artikel/([a-z_-]+).html$ index.php?artikel=$1 [L]
kann es sein, dass du eigentlich das Ziel der Umleitung vom Domain Root aus adressieren möchtest (also mit führendem /)? Denn andernfalls arbeitet mod_rewrite von dem Verzeichnis aus, das aus dem Request erkennbar ist.
Einen schönen Tag noch
Martin
Hallo,
kann es sein, dass du eigentlich das Ziel der Umleitung vom Domain Root aus adressieren möchtest (also mit führendem /)? Denn andernfalls arbeitet mod_rewrite von dem Verzeichnis aus, das aus dem Request erkennbar ist.
Korrektur: Das Umleitungsziel ist entweder
Einen schönen Tag noch
Martin
Das war jetzt zu hoch.
Also
http://raspberrypi/webseite/artikel/erster_beitrag.html
das ist die Adresse. DAS Verzeichnis artikel gibt es nicht.
Die htacsess liegt
http://raspberrypi/webseite
hier.
Hallo miteinander,
ich bin nicht so der Oberindianer
ich auch nicht, aber für den Hausgebrauch reicht's meistens.
In welchem Ordner liegt die .htaccess Datei? Gleicher Ordner wie die index.html?
Das sollte sie.
Ist mod_rewrite generell aktiv?
Ja. Sonst würde die Direktive RewriteEngine On schon einen 500er schmeißen.
Ich weiß nicht, ob man das in der httpd.conf noch einrichten muss
Man muss es als Server-Admin zumindest erlauben. Das mod_rewrite-Modul wird meines Wissens in der Defaultkonfiguration schon mitgeladen - es sei denn der Hoster hätte das deaktiviert. Hat er aber nicht. Siehe oben.
Per-directory Rewrites
The rewrite engine may be used in .htaccess files and in <Directory> sections, with some additional complexity.
To enable the rewrite engine in this context, you need to set "RewriteEngine On" and "Options FollowSymLinks" must be enabled. If your administrator has disabled override of FollowSymLinks for a user's directory, then you cannot use the rewrite engine.
Ups. Den Zusammenhang mit FollowSymLinks kannte ich auch noch nicht.
Einen schönen Tag noch
Martin
Hallo Martin,
Der Hoster ist er selbst, es ist doch ein Himbeertörtchen…
FollowSymLinks war mir auch neu und ich frage mich auch, warum es diese Anforderung gibt. Ich erkenne nicht wirklich einen Sinn darin, schließlich ist es ja nicht so (hoffe ich), dass der Apache aus jeder RewriteRule einen SymLink generiert. Das wär was, wenn Linux SymLinks aus Regexen aufbauen könnte.
Rolf
Hallo Rolf,
Der Hoster ist er selbst, es ist doch ein Himbeertörtchen…
aaah, stimmt. Das ist in meinem bewussten Hirn wohl nicht angekommen.
FollowSymLinks war mir auch neu und ich frage mich auch, warum es diese Anforderung gibt. Ich erkenne nicht wirklich einen Sinn darin
Ich auch nicht.
schließlich ist es ja nicht so (hoffe ich), dass der Apache aus jeder RewriteRule einen SymLink generiert.
Keineswegs. Die RewriteRules der Indianer haben keine Entsprechung im Filesystem.
Das wär was, wenn Linux SymLinks aus Regexen aufbauen könnte.
Kann es nicht. Ein SymLink auf einem Linux-Datenträger ist ähnlich wie eine Datei-Verknüpfung in Windows. Es gibt genau ein exakt beschriebenes Linkziel (und wenn das nicht mehr existiert - Pech gehabt).
Es gibt aber einen entscheidenden Unterschied zwischen Symlinks unter Linux und Dateiverknüpfungen unter Windows: Symlinks in Linux werden direkt vom Filesystem-Treiber aufgelöst, ohne dass die Anwendung das merkt; Dateiverknüpfungen in Windows werden ausschließlich vom Explorer, also auf Anwendungsebene aufgelöst.
Alternative Dateimanager sehen meist nur eine Datei LinkTarget.lnk, mit der sie nix anfangen können.
Einen schönen Tag noch
Martin
Passend zum Thema kommt der heutige Eintrag zu unserem Adventskalender:
Vielen Dank an @Der Martin
Herzliche Grüße
Matthias Scharwies