Zur Navigation

Zugriff verhindern mit htaccess

1 RudiR

Ein herzliches Hallo in die Runde,

ich möchte den Zugang zum Joomla-Frontend verhindern.

Das Frontend ist erreichbar unter:

http://www.domain.tld/index.php?option=com_users&view=login

RewriteEngine on
RewriteCond %{QUERY_STRING} ^option=com_users(.*)$
RewriteRule ^(.*)$ index.php [F,L]

dies funktioniert auch, es wird eine Fehlerseite angezeigt (warum keine Weiterleitung auf die index)?

Aber leider verhindert diese Regel auch den Zugriff auf die User im Backend unter:

http://www.domain.tld/administrator/index.php?option=com_users

Ich habe verschiedenes ohne Erfolg ausprobiert. Konnte auch nicht die gesamte URL zwischen ^und$ setzen, hat leider nicht geklappt.

Wie kann ich den Zugriff ermöglichen, also aus der obigen htaccess Regel wieder rausnehmen?

Habe im Netz gesucht, aber keine Lösung gefunden. Bin mit htaccess aber leider auch noch recht unerfahren.

Ich hoffe ihr könnt mir helfen.

Schon einmal herzlichen Dank dafür.

Rudi


14.01.2012 21:52

2 Jörg Kruse

dies funktioniert auch, es wird eine Fehlerseite angezeigt (warum keine Weiterleitung auf die index)?

Weiterleitungen gibt's nur mit den Status Codes, die mit einer 3 anfangen (301, 302). Es wär denke ich auch nicht sinnvoll, wenn der Besucher auf die Startseite weitergeleitet wird, und dort die Fehlermeldung 403 "Forbidden" erhält, was er dahigehend interpretieren könnte, dass er nun auf der gesamten Site keinen Zugriff mehr hat.

Aber leider verhindert diese Regel auch den Zugriff auf die User im Backend unter:

http://www.domain.tld/administrator/index.php?option=com_users

Das "(.*)" bedeutet kein oder mehrere beliebige Zeichen - somit wird auch diese URL von der Rule erfasst. Wenn dem "option=com_users" noch mindestens ein Zeichen folgen soll, solltest du stattdessen "(.+)" (= mindestens ein beliebiges Zeichen) verwenden - wobei du dir die Klammern und das abschließende Dollarzeichen auch schenken kannst

14.01.2012 22:38

3 RudiR

Hallo Jörg,

herzlichen Dank für deine schelle Antwort. Mit:
RewriteCond %{QUERY_STRING} ^option=com_users(.+)$
RewriteRule ^(.+)$ index.php [F,L]

ist der Zugriff möglich auf:

http://www.domain.tld/administrator/index.php?option=com_users


aber der Zugriff wird verhindert auf:

http://www.domain.tld/administrator/index.php?option=com_users&task=user.edit&id=ZAHL
http://www.domain.tld/administrator/index.php?option=com_users&view=groups
http://www.domain.tld/administrator/index.php?option=com_users&view=levels

Ich hätte meinen 1.Post besser formulieren sollen, sorry.

Zugriffe sollen erlaubt sein auf:
http://www.domain.tld/administrator/index.php?option=com_users&irgendwelche-weiteren-zeichen

Zugriffe sollen verboten sein auf:
http://www.domain.tld/index.php?option=com_users&view=login&irgendwelche-weiteren-zeichen

Wäre toll, wenn du mir helfen könntest, herzlichen Dank noch einmal.

Rudi

15.01.2012 14:02

4 Jörg Kruse

Achso, im Verzeichnis /administrator soll der Zugriff erlaubt sein, im DocumentRoot-Verzeichnis nicht

Das Muster "^(.+)$" in der RewriteRule trifft ja auf alle URLs zu. Stattdessen sollte dieses auf die index.php im DocumentRoot-Verzeichnis beschränkt werden:

RewriteCond %{QUERY_STRING} ^option=com_users
RewriteRule ^index\.php$ - [F,L]

15.01.2012 15:00

1 Forenmitglied fand diesen Beitrag gut

5 RudiR

Hallo Jörg,

ganz, ganz herzllichen Dank für deine Hilfe!

Es klappt jetzt so wie es soll.

Noch einen schönen Sonntag und alles Gute.

DANKE

Rudi

15.01.2012 15:23

6 GwenDragon (Gast)

Warum nicht so:
RewriteCond %{QUERY_STRING} ^option=com_users
RewriteCond %{REQUEST_URI} !administrator/index.php
RewriteRule index\.php$ - [F,L]

Damit würde doch die Administration erlaubt.

;)

20.01.2012 10:57

1 Forenmitglied fand diesen Beitrag gut

7 Jörg Kruse

Ja, so geht's natürlich auch :) und wenn andere Unterverzeichnisse verboten werden sollen, wäre es wohl sogar die einzig mögliche Lösung. Meine Lösung mit dem "^" vorm "index\.php$" hätte ansonsten nur den Vorteil, dass sie kürzer ist ;)

20.01.2012 11:19 | geändert: 20.01.2012 11:19

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]