Symfony的应用程序显示的目录列表使用HTTPS

问题描述:

普通VHOST时:Symfony的应用程序显示的目录列表使用HTTPS

<VirtualHost *:80> 
DocumentRoot /var/www/html/app/current/web 
ServerAdmin [email protected] 
ServerName app.foobar 
ServerAlias www.app.foobar 
<Directory /var/www/html/app/current/web> 
     AllowOverride None 
     Order Allow,Deny 
     Allow from All  

     <IfModule mod_rewrite.c> 
      Options Indexes FollowSymlinks 
      RewriteEngine On 
      RewriteCond %{REQUEST_FILENAME} !-f 
      RewriteCond %{REQUEST_FILENAME} !HTTP/1.1$ 
      RewriteRule ^(.*)$ app.php [QSA,L] 
     </IfModule> 
</Directory> 

<IfModule mod_headers.c> 
    Header set X-XSS-Protection "1; mode=block" 
</IfModule> 
</VirtualHost>  

HTTPS VHOST:

<VirtualHost *:443>  
DocumentRoot /var/www/html/app/current/web 
ServerName app.foobar 
ServerAdmin [email protected] 
<Directory /var/www/html/app/current/web> 
AllowOverride None 
Order Allow,Deny 
Allow from All 
<IfModule mod_rewrite> 
Options Indexes FollowSymlinks 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !HTTP/1.1$ 
RewriteRule ^(.*)$ app.php [QSA,L] 
</IfModule> 
</Directory> 
SSLEngine on 
SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 
SSLCertificateFile /ssl/app.foobar/app.foobar.crt 
SSLCertificateKeyFile /ssl/app.foobar/app.foobar.key 
SSLCACertificateFile /ssl/app.foobar/app.foobar.ca-bundle 
</VirtualHost>  

正如标题所说,当我使用普通端口80的URL重写使用app.php但是当我尝试使用https端口443时,我得到了一个目录列表。如何使用https重写URL,就像使用http一样?

+0

我刚刚被挖通过Apache mod_rewrite的文档,发现'FallbackResource'指令。这似乎工作。但为什么这不在Symfony文档中? –

我使用Apache 2.2.16+中的FallbackResource指令解决了这个问题。

在官方Symfony文档中,此指令不用于保持向后兼容旧版本的Apache。讨论是here

代码示例:

<Directory /var/www/html/app/current/web> 
    AllowOverride None 
    Order Allow,Deny 
    Allow from All  

    <IfModule mod_rewrite.c> 
     FallbackResource /app.php 
    </IfModule> 
</Directory>