【发布时间】:2016-01-08 14:45:45
【问题描述】:
我正在使用 mod_rewrite 将所有请求重定向到我网站中的索引。我需要实现一个功能来上传文件/图像,但它不起作用
$config_upload = $_SERVER['DOCUMENT_ROOT']."/files/";
$ext = getExt($_FILES['file']['name']);
move_uploaded_file($_FILES['file']['tmp_name'], $config_upload.rand().$ext);
因为我使用的是 mod_rewrite,所以这根本不起作用。我的“文件”目录有 777 权限。但我认为 mod_rewrite 正在搞乱这个相对路径,并且该功能无法正常工作。
您知道如何解决它吗?我正在考虑将我的 mod 重写限制为仅 php 文件
我当前的 .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !/(admin|css|fonts|ico|include|js)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
</IfModule>
【问题讨论】:
-
mod_rewrite不影响文件上传 -
有什么办法可以解决当时发生的事情吗?我尝试了几种不同的配置,但我不知道我还能尝试什么
-
不要使用与您的服务器相关的 $_SERVER['DOCUMENT_ROOT'] ,而不是您的应用程序。例如,如果您的应用程序是虚拟主机或在子文件夹中,它可能不是您要查找的路径。而是将应用的根路径存储在配置文件(或 elswhere)中
-
不直接相关,但此 (
$config_upload.rand().$ext) 将 导致文件覆盖。使用uniqid()而不是rand()
标签: php apache .htaccess mod-rewrite upload