klausinge
Goto Top

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&para1=$3&para2=$4 [L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+)/([^\.]+) index.php?plugin=$1&action=$2&para1=$3&para2=$4 [L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+)/ index.php?plugin=$1&action=$2&para1=$3 [L]
RewriteRule ^([^\.]+)/([^\.]+)/([^\.]+) index.php?plugin=$1&action=$2&para1=$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>

Content-ID: 227569

Url: https://administrator.de/contentid/227569

Ausgedruckt am: 16.11.2024 um 10:11 Uhr

colinardo
colinardo 23.01.2014 aktualisiert um 20:51:08 Uhr
Goto Top
Hallo KlausInge,
das zwischen die favicon-Rule und den index.php-Rules eingefügt sollte funktionieren
RewriteRule ^bilder/?$ /bilder [L,NC]
Grüße Uwe
KlausInge
KlausInge 23.01.2014 um 20:50:07 Uhr
Goto Top
Hallo Uwe, danke für die schnelle Reaktion. Habe dies entsprechend eingefügt.

Rufe ich nun im Browser abc.de/bilder auf dann wird dies umgewandelt in www.abc.de/bilder/?plugin=bilder

Hast Du noch eine Info für mich wo der Fehler liegen könnte?
Danke

KlausInge
colinardo
colinardo 23.01.2014 aktualisiert um 21:44:49 Uhr
Goto Top
probier es mal hiermit:

-entfernt / war misst bzw. funktioniert nicht auf jedem System ohne Anpassung-

siehe Arano's Lösung...
KlausInge
KlausInge 23.01.2014 um 21:21:20 Uhr
Goto Top
Danke nochmal Uwe, da kommt nun ein Umleitungsfehler "Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann."

KlausInge
Arano
Arano 23.01.2014 um 21:27:22 Uhr
Goto Top
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 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
So sollte (müsste) vor deinen Rules ein
RewriteCond %{REQUEST_URI} !^/bilder
doch auch funktionieren.


~Arano
KlausInge
KlausInge 23.01.2014 um 21:46:35 Uhr
Goto Top
Hallo Arano, Dir auch ein großes Danke für Dein Kommentar. Leider bringt mich dies auch nicht zum Erfolg.

Klaus
colinardo
colinardo 24.01.2014 um 09:38:33 Uhr
Goto Top
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 ?
Arano
Arano 24.01.2014 um 11:02:21 Uhr
Goto Top
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
Arano
Arano 24.01.2014 um 17:42:08 Uhr
Goto Top
Hi

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&para1=$3&para2=$4 [L]
[...]
Gut möglich das ich den Sinn nicht erkenne aber momentan sieht mir das
  • überflüssig und
  • "doppelt gemoppelt" aus
Der direkte Zugriff auf die "index.php"-Datei sollte doch so funktionieren, zumindest sehe ich gerade keine andere Rule die darauf ansprechen würde !
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&para1=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
Arano
Arano 24.01.2014 um 18:39:52 Uhr
Goto Top
So... da bin ich wieder !
Und schlauer bin ich jetzt auch face-smile

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]
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 $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'] );  
?>
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: 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 face-big-smile


~Arano