【发布时间】:2016-05-26 18:19:19
【问题描述】:
我有一个 Laravel Web 应用程序,它允许人们将他们的文件上传到 uploads 目录。
我想允许任何文件类型和名称,但不允许执行它们(只是静态文件上传/下载),所以我创建了一个 .htaccess 文件:
/public_html/uploads/.htaccess:
php_flag engine off
但是当我尝试访问存储的文件(例如 /uploads/photo.jpg)时,Laravel 会提供一个 NotFoundHttpException。
如果我在行前加上#,我可以访问文件,但随后执行 php 脚本。
这是 Laravel 的 htaccess 文件
/public_html/uploads/.htaccess:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
【问题讨论】:
标签: php apache .htaccess laravel