Anpassung htaccess
Hallo, ich habe hier eine htaccess Datei. Diese sorgt dafür, das die domain www.abc.de/xyz angezeigt wird aber intern index.php?plugin=xyz geladen wird.
Nun habe ich den Unterorder bilder, welcher direkt aufrufbar sein soll. also www.abc.de/bilder soll er nicht die index.php aufrufen sondern ganz normal den Ordner Bilder aufrufen. Hat jemand einen Tipp für mich. Habe nun schon eine Weile gegooglet aber nichts gefunden was funktioniert. Danke
htaccess Datei:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
#RewriteBase /
RewriteEngine On
RewriteRule ^\.htaccess$ - [F]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .*robots.txt$ robots.txt [L]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .*favicon\.ico$ favicon.ico [L]
RewriteRule index.php$ index.php [QSA,L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+)/([^\.]+)/ index.php?plugin=$1&action=$2¶1=$3¶2=$4 [L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+)/([^\.]+) index.php?plugin=$1&action=$2¶1=$3¶2=$4 [L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+)/ index.php?plugin=$1&action=$2¶1=$3 [L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+) index.php?plugin=$1&action=$2¶1=$3 [L]
RewriteRule ^([^\.]+)/([^\.]+)/ index.php?plugin=$1&action=$2 [L]
RewriteRule ^([^\.]+)/([^\.]+) index.php?plugin=$1&action=$2 [L]
RewriteRule ^([^\.]+)/ index.php?plugin=$1 [L]
RewriteRule ^([^\.]+) index.php?plugin=$1 [L]
</IfModule>
Nun habe ich den Unterorder bilder, welcher direkt aufrufbar sein soll. also www.abc.de/bilder soll er nicht die index.php aufrufen sondern ganz normal den Ordner Bilder aufrufen. Hat jemand einen Tipp für mich. Habe nun schon eine Weile gegooglet aber nichts gefunden was funktioniert. Danke
htaccess Datei:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
#RewriteBase /
RewriteEngine On
RewriteRule ^\.htaccess$ - [F]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .*robots.txt$ robots.txt [L]
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule .*favicon\.ico$ favicon.ico [L]
RewriteRule index.php$ index.php [QSA,L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+)/([^\.]+)/ index.php?plugin=$1&action=$2¶1=$3¶2=$4 [L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+)/([^\.]+) index.php?plugin=$1&action=$2¶1=$3¶2=$4 [L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+)/ index.php?plugin=$1&action=$2¶1=$3 [L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+) index.php?plugin=$1&action=$2¶1=$3 [L]
RewriteRule ^([^\.]+)/([^\.]+)/ index.php?plugin=$1&action=$2 [L]
RewriteRule ^([^\.]+)/([^\.]+) index.php?plugin=$1&action=$2 [L]
RewriteRule ^([^\.]+)/ index.php?plugin=$1 [L]
RewriteRule ^([^\.]+) index.php?plugin=$1 [L]
</IfModule>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 227569
Url: https://administrator.de/contentid/227569
Ausgedruckt am: 16.11.2024 um 10:11 Uhr
10 Kommentare
Neuester Kommentar
Hi KlausInge
Ich habe da was ähnliches !
Bei mir möchte ich die Direktzugriffe auf die Verzeichnisse "admin" und "extras" erlauben.
Dazu verwende ich die
So sollte (müsste) vor deinen Rules ein doch auch funktionieren.
~Arano
Ich habe da was ähnliches !
Bei mir möchte ich die Direktzugriffe auf die Verzeichnisse "admin" und "extras" erlauben.
Dazu verwende ich die
RewriteCond
um die "normalen" RewriteRules
nur anzuwenden wenn die aufgerufene URL eben NICHT mit diesen beiden "Wörtern" beginnen:RewriteCond %{REQUEST_URI} !^/(admin|extras)
RewriteRule ^(.+)\.html$ /index.php?s=$1
RewriteRule ^$ /index.php?s=index
RewriteCond %{REQUEST_URI} !^/bilder
~Arano
Zitat von @KlausInge:
Hallo Arano, Dir auch ein großes Danke für Dein Kommentar. Leider bringt mich dies auch nicht zum Erfolg.
Also hier geht das von Arano problemlos, hast du mal deinen Browser-Cache gelöscht ?Hallo Arano, Dir auch ein großes Danke für Dein Kommentar. Leider bringt mich dies auch nicht zum Erfolg.
Hi,
bin natürlich gerade auf der Arbeit daher mal nur einen Link.
Wenn du Zugriff auf die Apache-Config hast, kannst du ja mal das RewriteLogging aktivieren. Vielleicht kommt man damit auf die Spur des Problems.
http://stackoverflow.com/questions/9632852/how-to-debug-apache-mod-rewr ...
Ich selbst habe das erst ejnmal gemacht, kenne mich damit also auch nicht aus.
Ab Version 2.4 hat man das wihl mal umgebaut, steht aber auch in dem Post.
Kann man ja mal ausprobieren.
Viel Erfolg,
bis Später
~Arano
bin natürlich gerade auf der Arbeit daher mal nur einen Link.
Wenn du Zugriff auf die Apache-Config hast, kannst du ja mal das RewriteLogging aktivieren. Vielleicht kommt man damit auf die Spur des Problems.
http://stackoverflow.com/questions/9632852/how-to-debug-apache-mod-rewr ...
Ich selbst habe das erst ejnmal gemacht, kenne mich damit also auch nicht aus.
Ab Version 2.4 hat man das wihl mal umgebaut, steht aber auch in dem Post.
Kann man ja mal ausprobieren.
Viel Erfolg,
bis Später
~Arano
Hi
Hm... hast du es mittlerweile auch mal ohne die folgende erste Rule versucht !?
Gut möglich das ich den Sinn nicht erkenne aber momentan sieht mir das
Und wenn es zu einem treffendem Aufruf kommt (z.B. domain.de/gaestebuch/seite/3) wird das ja auch auf die "index.php"-Datei umgelengt (domain.de/index.php?plugin=geastebuch&action=seite¶1=3), da die URL nun auf diese Rule passt wird sie ggf. erneut umgeleitet.
Oder wird genau dieses doppel gemoppel von [L] geblockt !?
Naja, egal ob [L] das nun tut oder nicht... nötig ist es dennoch nicht ODER ?
Und vielleicht ist das auch ein Problem.
Ich gehe mal ausprobieren...
~Arano
Hm... hast du es mittlerweile auch mal ohne die folgende erste Rule versucht !?
RewriteRule index.php$ index.php [QSA,L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+)/([^\.]+)/ index.php?plugin=$1&action=$2¶1=$3¶2=$4 [L]
[...]
- überflüssig und
- "doppelt gemoppelt" aus
Und wenn es zu einem treffendem Aufruf kommt (z.B. domain.de/gaestebuch/seite/3) wird das ja auch auf die "index.php"-Datei umgelengt (domain.de/index.php?plugin=geastebuch&action=seite¶1=3), da die URL nun auf diese Rule passt wird sie ggf. erneut umgeleitet.
Oder wird genau dieses doppel gemoppel von [L] geblockt !?
Naja, egal ob [L] das nun tut oder nicht... nötig ist es dennoch nicht ODER ?
Und vielleicht ist das auch ein Problem.
Ich gehe mal ausprobieren...
~Arano
So... da bin ich wieder !
Und schlauer bin ich jetzt auch
Zu meiner eigenen Lösung:
Eine
Mann kann zwar mehrere Conditions verwenden [OR] [AND] aber die nur eine Rule anwenden.
Meine Lösung ist also falsch und hat nur den Anschein als ob sie funktionieren würde. Wie gesagt, ich habe das selber so in Verwendung.
Ein Problem erzeugt es bei mit nicht wie meine zweite Rule sich darauf bezieht das keine URL angegeben wurde was automatisch dem Sinn der Condition entspricht. Ich sollte meine zweite Rule also auch an eine andere Stelle kopieren können und es würde trotzdem funktionieren - weil es nichts mit der Condition zu tun hat.
Und wie hilft man dir jetzt: Ich habe zwei Vorschläge !
Nr.2 wird favorisiert
1.
Du baust die Condition so um, das sie auf URL die mit "bilder" beginnen anspringt und die folgende Rule einfach nur eine allgemeine Weiterleitung macht, etwa:Da diese allg. Weiterleitung durch die Condition auf den Bilderordner begrenzt ist (sofern keine Plugins mit diesem Wort beginnen) sollte das entsprechend nur auf die Bilderaufrufe angewendet werden.
2.
Du baust deine "index.php"-Datei um.
Weil ja eh alles auf die "index.php"-Datei umgeleitet wird, kannst du auch in ihr die URL analysieren. Das ist auch das was ich gemacht habe und der Grund warum ich mit solch einer simplen Rule auskomme und du dir je nach Anwendungsfall(Plugin) neue Rules basteln muss - die den vorherigen auch noch sehr ähnlich sind.
Ich habe mir dazu eine "UrlAnalyser" programmiert (naja, zumindest angefangen) der in der "index.php"-Datei aufgerufen wird und die URL nach einem gewünschtem Muster in Einzelteile zerlegt und einfach ein Array
So könnte dann jedes Plugin die Werte aus dem Array lesen und verarbeiten - völlig eigenständig ohne das die Rules oder sonst was angepasst werden müssen.
Also im Prinzip ein
Nur etwas verfeinert das die Dateierweiterung weggelassen wird, das ich Key und Value paare bilden kann (Trenner= "_" und "-") und das ich Werte zu einer URL zusammensetzen lassen kann:
Das ist zwar keine direkte Lösung für das Problem, aber vielleicht trotzdem besser - vorallem wenn man sich dann nicht mehr mit den Rules herumschlagen muss
~Arano
Und schlauer bin ich jetzt auch
Zu meiner eigenen Lösung:
Eine
RewriteCond
ist NUR FÜR EINE RewriteRule
!Mann kann zwar mehrere Conditions verwenden [OR] [AND] aber die nur eine Rule anwenden.
Meine Lösung ist also falsch und hat nur den Anschein als ob sie funktionieren würde. Wie gesagt, ich habe das selber so in Verwendung.
Ein Problem erzeugt es bei mit nicht wie meine zweite Rule sich darauf bezieht das keine URL angegeben wurde was automatisch dem Sinn der Condition entspricht. Ich sollte meine zweite Rule also auch an eine andere Stelle kopieren können und es würde trotzdem funktionieren - weil es nichts mit der Condition zu tun hat.
Und wie hilft man dir jetzt: Ich habe zwei Vorschläge !
Nr.2 wird favorisiert
1.
Du baust die Condition so um, das sie auf URL die mit "bilder" beginnen anspringt und die folgende Rule einfach nur eine allgemeine Weiterleitung macht, etwa:
RewriteCond %{REQUEST_URI} ^bilder<br>
RewriteRule .* $1 [L]
2.
Du baust deine "index.php"-Datei um.
Weil ja eh alles auf die "index.php"-Datei umgeleitet wird, kannst du auch in ihr die URL analysieren. Das ist auch das was ich gemacht habe und der Grund warum ich mit solch einer simplen Rule auskomme und du dir je nach Anwendungsfall(Plugin) neue Rules basteln muss - die den vorherigen auch noch sehr ähnlich sind.
Ich habe mir dazu eine "UrlAnalyser" programmiert (naja, zumindest angefangen) der in der "index.php"-Datei aufgerufen wird und die URL nach einem gewünschtem Muster in Einzelteile zerlegt und einfach ein Array
$urlreq
bereitstellt, das die einzelnen Werte beinhaltet.So könnte dann jedes Plugin die Werte aus dem Array lesen und verarbeiten - völlig eigenständig ohne das die Rules oder sonst was angepasst werden müssen.
Also im Prinzip ein
<?php
$urlreq = explode( '/', $_SERVER['REQUEST_URI'] );
?>
domain.de/gaestebuch/seite-3_key2-value2_k3-v3.html
um auch die richtigen Links zu generieren.Das ist zwar keine direkte Lösung für das Problem, aber vielleicht trotzdem besser - vorallem wenn man sich dann nicht mehr mit den Rules herumschlagen muss
~Arano