2016-04-27 4 views
2

Ich habe folgende .htaccess-Datei im Web zu Hause von Apache2 in einem Behälter Docker verwendet:Optionen -Indexes funktioniert nicht in .htaccess-Datei in Docker continer

# allows HTML files to be interpretted as PHP files 
AddType application/x-httpd-php .html 

# allows redirect to *.html files without using the extension 
# e.g., http://domain.com/foo will show http://domain.com/foo.html 
<IfModule mod_rewrite.c> 
    Options All 
    RewriteEngine on 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}.html -f 
    #RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L] 
    RewriteRule !.*\.html$ %{REQUEST_URI}.html [L] 

# causes redirect from HTTP to HTTPS 
    RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
</IfModule> 

Options -Indexes 

# environament variables 
SetEnv DBL "mysql:dbname=roars;host=foo;port=3306" 
SetEnv DB_USER "bar" 
SetEnv DB_PASS "glorp" 

Die Options -Indexes Richtlinie hält uns nicht davon, dass In der Lage, Verzeichnisse anzuzeigen. Alle anderen Direktiven funktionieren ordnungsgemäß. Wenn ich diese .htaccess-Datei außerhalb eines Docker-Containers verwende, funktioniert sie entsprechend, indem die Anzeige eines Verzeichnisses nicht zugelassen wird.

Habe ich etwas falsch gemacht, oder ist das speziell für Docker-Container?

+0

Sind Sie sicher, dass htaccess gelesen wird? – anubhava

+1

Ja, denn * wie angegeben * funktionieren alle anderen Direktiven @anubhava –

Antwort

2

fand ich die Ausgabe in der Standardkonfigurationsdatei für Apache2 im Behälter Docker:

<VirtualHost *:80> 

    ServerAdmin [email protected] 
    ServerName dev.f0o.com 
    DocumentRoot /home/foo/src/www-server/ 

    #ErrorLog ${APACHE_LOG_DIR}/error.log 
    #CustomLog ${APACHE_LOG_DIR}/access.log combined 
    ErrorLog /var/log/apache2/error.log 
    CustomLog /var/log/apache2/access.log combined 

</VirtualHost> 

<Directory /home/foo/src/www-server/> 
    # allow .htaccess overrides to work 
    AllowOverride All 
    DirectoryIndex login.html index.html index.php 
</Directory> 

# this matches a link to any device directory to the physical webui directory 
#AliasMatch ^/projects/([-\w]*)/css/(.*)$ /home/foo/src/www-server/static/css/$2 
#AliasMatch ^/projects/([-\w]*)/fonts/(.*)$ /home/foo/src/www-server/static/fonts/$2 
#AliasMatch ^/projects/([-\w]*)/images/(.*)$ /home/foo/src/www-server/static/images/$2 
#AliasMatch ^/projects/([-\w]*)/lib/(.*)$ /home/foo/src/www-server/static/lib/$2 
#AliasMatch ^/projects/([-\w]*)/scripts/(.*)$ /home/foo/src/www-server/static/scripts/$2 

AliasMatch ^/projects/([-\w]*)/(.*)$ /home/foo/src/www-server/client/$2 


<Directory /home/foo/src/www-server/client> 
    DirectoryIndex home.html 
    Options All 
    AllowOverride All 
    Require all granted 
</Directory> 

Lösung 1 - Das Problem wurde zuerst in /home/foo/src/www-server/client bemerkt, die am Ende seinen eigenen spezifischen Satz von Überschreibungen haben der Standardkonfigurationsdatei. Die Verzeichnisliste wurde zugelassen, da Options auf All festgelegt ist. Ändern Sie es in Options -Indexes das Problem behoben.


Lösung 2 - Als ein Experiment, kommentierte ich mit Options und die Ergebnisse waren Start der Linie heraus, was ich wollte, wahrscheinlich, weil die .htaccess-Datei ihre Arbeit ohne Konflikt aus der Standard-Konfigurationsdatei ausführen durfte .


Weil ich nicht bin, in der Regel eine Person, die Web-Server konfiguriert Ich bin sicher, dass es vielleicht bessere Möglichkeiten, das Problem der Menge bekannter ist gegeben zu lösen wir jetzt haben. Diejenigen mit mehr Erfahrung in der Konfiguration des Apache-Webservers haben möglicherweise elegantere Lösungen.

Verwandte Themen