Beschränken Sie den Zugriff in Apache mit Ausnahme einer URL, wenn Sie "master file" und mod_rewrite verwenden

1196
Craig Silver

Ich habe die Basisauthentifizierung erfolgreich auf meine gesamte Website angewendet. Jetzt möchte ich eine Ausnahme für ein bestimmtes URL-Muster machen. Nach meinem Verständnis kann ich die Direktive verwenden, aber bisher funktioniert sie nicht.

Was die Sache komplizierter macht, ist vielleicht, dass jede Seite meiner Website tatsächlich /master.php ist, und der einzige Unterschied von Seite zu Seite ist die Abfragezeichenfolge, die master.php anweist, den seitenspezifischen Inhalt einzufügen. Dies gibt mir eine wirklich einfache Hautlösung. Zusammen mit mod_rewrite habe ich freundliche URLs wie diese:

mysite.com/stats mysite.com/about 

die neu geschrieben werden in:

mysite.com/master.php?p=stats mysite.com/master.php?p=about 

Ist es in diesem Setup möglich, die Authentifizierung für die gesamte Site zu verlangen, außer für / about? Beachten Sie, dass / about möglicherweise eine Abfragezeichenfolge enthält. Aus diesem Grund muss für ein URL- Muster eine Ausnahme gemacht werden, nicht nur für eine bestimmte URL.

Wenn es einen Unterschied macht, sind hier einige Besonderheiten:

  • Ubuntu 15.04
  • Apache 2.4.10
  • Meine Umschreibungen befinden sich in der Datei site.conf, nicht in .htaccess-Dateien.
0
Überprüfen Sie dieses Thema, und passen Sie es in Ihren URIs an: http://stackoverflow.com/questions/8731109/getting-authentication-required-when-requesting-instead-of-index-php?rq=1 h0ch5tr4355 vor 9 Jahren 0
Das hat perfekt funktioniert, danke! Wie soll ich das als Antwort akzeptieren? Ist es auch ein schlechtes Formular, um mit einem Link zu antworten, anstatt mit der tatsächlichen Antwort, da sich der Inhalt der verlinkten Seite ändern könnte oder wegfällt, oder handelt es sich nur um Inhalte, die nicht StackExchange-Inhalte sind? Craig Silver vor 9 Jahren 0
Sie haben auf Superuser gepostet, und mein Link stammt von stackoverflow. Ich konnte sie nicht als Duplikat markieren. Sie können entweder Ihre eigene Frage beantworten oder ich kann es tun, wenn Sie an dem anderen Thema nichts geändert haben. h0ch5tr4355 vor 9 Jahren 0

1 Antwort auf die Frage

0
h0ch5tr4355

Mit mod_setenvif:

SetEnvIf Request_URI "^/about$" allow=yes  AuthType Basic AuthName "Password Required" AuthUserFile /var/www/webinterface/.htpasswd Options +FollowSymLinks Order Deny,Allow Satisfy any Deny from All Require valid-user Allow from env=allow 

→ Der untere Teil blockiert den gesamten Inhalt, außer wenn Sie angemeldet sind oder wenn allow=yes, was nur festgelegt wird, wenn die Anfrage uri die Site ist.

Referenz: https://stackoverflow.com/questions/8731109/getting-authentication-required-when-requesting-instead-of-index-php?rq=1

Ich kopiere meinen Kommentar / meine Frage auch von StackOverflow: Müssen Sie den Block, der mit AuthType beginnt, nicht in ein . oder etc. Direktive? Craig Silver vor 9 Jahren 0
nicht sicher was du meinst h0ch5tr4355 vor 9 Jahren 0
Schwer in einem Kommentar zu erklären. Wenn ich die obigen Zeilen kopiert und in meine .conf-Datei eingefügt und Apache neu gestartet habe, beschwerte er sich mit einem AH00526-Fehler: "AuthType hier nicht zulässig". (Beachten Sie, dass der Fehler erst nach dem Ausführen von systemctl status apache2.service aufgetreten ist.) Dann habe ich alles eingefügt, das mit AuthType beginnt und mit Allow von env = allow dazwischen endet. Sobald ich das getan und neu gestartet habe, hat es funktioniert. Craig Silver vor 9 Jahren 0