[FIXED] Verzeichnis im lokalen Netzwerk und nur virtuellen Host in .htaccess zulassen

Ausgabe

Ich habe auf meinem Raspberry Pi eine Nextcloud installiert. Ich möchte es in meinem lokalen Netzwerk für die Dateiübertragung und überall für Kontakte und den Kalender verwenden.

Meine nextcloud befindet sich unter /var/www/html/nextcloud. Ich habe auch eine Datei erstellt /etc/apache2/sites-available/nextcloud.conf, um den virtuellen Host zu aktivieren. Grundsätzlich:

<VirtualHost *:80>
  DocumentRoot /var/www/html/nextcloud/
  ServerName  nextcloud.example.com

  <Directory /var/www/html/nextcloud/>
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews

    <IfModule mod_dav.c>
      Dav off
    </IfModule>
  </Directory>

  SetEnv HOME /var/www/html/nextcloud
  SetEnv HTTP_HOME /var/www/html/nextcloud
</VirtualHost>

Die nextcloud ist unter folgenden Links erreichbar:

  • 192.168.2.100/nextcloud
  • nextcloud.example.com
  • example.com/nextcloud

Meine Frage: Gibt es eine Möglichkeit den Zugriff via zu verbieten example.com/nextcloud?

deny, allowIch habe versucht, Einträge in hinzuzufügen /var/www/html/nextcloud/.htaccess. Aber entweder blockiere ich zu viel, oder es funktioniert nicht. Hilfe wird geschätzt.

Lösung

Die Tatsache, dass example.com/nextcloudüberhaupt zugänglich ist, liegt daran, dass Sie die Subdomain auf ein Unterverzeichnis außerhalb des Dokumentenstammverzeichnisses der Hauptdomain verweisen (wie im VirtualHost der Hauptdomain definiert). Wenn die Unterdomäne eine völlig separate Entität ist, dann wäre es vorzuziehen, dass sie auf einen Bereich außerhalb des Dokumentenstamms der Hauptdomäne zeigt.

Ich habe versucht, deny Einträge hinzuzufügen, erlauben Sie Einträge in/var/www/html/nextcloud/.htaccess

Wenn Sie dies blockieren möchten .htaccess(im Gegensatz zur vHost-Konfiguration der Hauptdomäne), müssen Sie den angeforderten HostHeader überprüfen. Und dabei hätte ich gedacht, dass es vorzuziehen wäre, etwas anderes als den kanonischen Hostnamen zu blockieren, dh. alles andere nextcloud.example.com(also blockiert es auch Anfragen über die IP-Adresse). Anstatt nach den Hostnamen zu suchen, die Sie blockieren möchten. Sie können dies zum Beispiel mit mod_rewrite tun:

# /var/www/html/nextcloud/.htaccess

RewriteEngine On

RewriteCond %{HTTP_HOST} !^nextcloud\.example\.com$
RewriteRule ^ - [F]

Das obige antwortet mit einem “403 Forbidden” für jede Anfrage, bei der der angeforderte HostHeader nicht (wie durch das !Präfix angegeben) ist nextcloud.example.com.

Sie können dieses Unterverzeichnis auch im vHost-Container der Hauptdomäne blockieren (nicht in der Subdomäne). Es gilt also nur für Anfragen an example.com. Zum Beispiel:

<Directory /var/www/html/nextcloud>
    Require all denied
</Directory>

Beachten Sie, dass Order, Allowund DenyApache 2.2-Direktiven sind und früher auf Apache 2.4 veraltet waren. Sie sollten Require(mod_authz_core) auf Apache 2.4 verwenden.


Beantwortet von –
MrWhite


Antwort geprüft von –
Cary Denson (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like

[FIXED] htaccess Unterordner stille Weiterleitung basierend darauf, wie viele Unterordner die URL/der Link hat

Ausgabe Ich habe folgende Situation Hauptwebsitehttps://www.example.com Ich will: jede https://www.example.com/folder1/folder2/folder3/zu stille Umleitung zuhttps://www.example.com/folder1/index.php?d2=folder2&d3=folder3 jede https://www.example.com/folder1/folder2/folder3/folder4/zu stille Umleitung zuhttps://www.example.com/folder1/secondindex.php?d2=folder2&d3=folder3&d4=folder4…