2016-04-27 38 views
2

我有一個碼頭工人容器的Apache2的Web在家中使用以下.htaccess文件:選項-Indexes不是在泊塢continer .htaccess文件工作

# 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" 

Options -Indexes指令不是不讓我們是能夠查看目錄。所有其他指令都可以正常工作,當我在Docker容器外部使用這個.htaccess文件時,它可以通過禁止查看目錄來適當地工作。

我做錯了什麼,還是這對Docker容器特別?

+0

你確定這個htaccess正在被讀取嗎? – anubhava

+1

是的,因爲*如上所述*所有其他指令正常工作@anubhava –

回答

2

我發現這個問題在泊塢容器的Apache2默認配置文件中:

<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> 

解決方案1 ​​ - 這個問題最早是在/home/foo/src/www-server/client它有自己特定的一組覆蓋的末發現的默認配置文件。目錄列表被允許,因爲Options設置爲All。將其更改爲Options -Indexes解決了問題。


解決方案2 - 作爲一個實驗我註釋掉開始Options行,結果是什麼,我想,可能是因爲.htaccess文件被允許無衝突從默認的配置文件執行其工作。


因爲我不是,通常情況下,誰配置Web服務器的人,我相信有可能是更好的方式來解決給定組已知的,我們現在有這個問題。那些在Apache Web服務器配置方面擁有更多專業知識的人可能會有更優雅的解決方案