
Ich möchte den Benutzern nur den Besuch index.php
(und auch nur den Zugriff /
) auf meinen Server gestatten und sonst nichts (bei einer gültigen Datei wird eine 403- und bei einer ungültigen Datei eine 404-Fehlermeldung zurückgegeben).
Wie kann ich das machen? Ich habe die folgenden Lösungen ausprobiert Zugriff auf alle Dateien außer index.html verweigern Apache
aber sie scheinen keine Wirkung zu haben.
Meine .htaccess-Datei ist diese, aber sie hat keine Wirkung und ich kann weiterhin auf andere Dateien auf meinem Server zugreifen:
Order allow,deny
Deny from all
<FilesMatch index\.php>
Allow from all
</FilesMatch>
Ich bin nicht sicher, ob ich in meiner Virtualhosts-Konfiguration auch etwas definieren muss?
Meine Virtualhosts-Datei ist:
ServerAdmin webmaster@localhost
ServerName server.mydomain.com
ServerAlias server.mydomain.com
DocumentRoot /var/www/server.mydomain.com
DirectoryIndex index.php
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/server.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/server.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
Die Ausgabe von apache2ctl -S lautet:
VirtualHost configuration:
*:443 server.mydomain.com (/etc/apache2/sites-enabled/server.mydomain.com-le-ssl.conf:2)
*:80 server.mydomain.com (/etc/apache2/sites-enabled/server.mydomain.com.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex ssl-stapling-refresh: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
Antwort1
Meiner Meinung nach gehen Sie die Dinge falsch an und versuchen, ein Problem zu lösen, das vollständig vermieden werden kann:
Speichern Sie einfach keine Dateien und Verzeichnisse in Ihrem DocumentRoot, die nicht online gehören.
Beschränken Sie den Inhalt des Verzeichnisses /var/www/server.example.com
auf nur diese index.php
Datei, dann können Sie nichts falsch machen.
Diese Frage ist mit dem historischenapache-2.2Version und Syntax davon sind nicht für die aktuelle Apache httpd 2.4-Version geeignet. - Siehehttps://httpd.apache.org/docs/2.4/upgrading.html
Wenn Sie etwas veröffentlichen möchten, http://www.example.com/some-path/
verwenden Sie dieAlias
-Direktive, um ein völlig anderes Verzeichnis verfügbar zu machen, anstatt ein Unterverzeichnis zu erstellen /var/www/server.example.com/some-path/
(z. B. create /var/www//some-path
), und verwenden Sie:
<VirtualHost *:80
ServerAdmin webmaster@localhost
ServerName server.mydomain.com
ServerAlias server.mydomain.com
DocumentRoot /var/www/server.example.com
Alias /some-path "/var/www/some-path"
<Directory "/var/www/some-path">
# add settings here, for example
Order deny,allow
Deny from all
Allow From 127.0.0.1
</Directory>
</VirtualHost>