PHP项目中如何将uploads目录文件请求重定向至index.php
解决uploads目录文件直接访问的重定向问题
直接修改你的.htaccess文件,在现有规则最前面添加针对uploads目录的强制转发规则,完整代码如下:
AddType application/x-httpd-php .html RewriteEngine On # 强制uploads目录下所有请求转发到index.php RewriteRule ^uploads/.*$ index.php [L,QSA] # 非存在文件的请求转发到index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [L,QSA] # 无后缀URL自动补全.php RewriteRule ^([^\.]+)$ $1.php [NC,L]
关键改动说明:
- 新增的
RewriteRule ^uploads/.*$ index.php [L,QSA]必须放在最顶部,优先匹配所有以uploads/开头的请求——不管对应的文件是否真实存在,都会直接转发到index.php。[L]表示匹配后停止后续规则执行,QSA会保留原请求的查询参数。 - 原规则里的
RewriteCond %{REQUEST_FILENAME} !-f会跳过真实存在的文件,这就是之前uploads下的文件能直接访问的原因,现在通过前置uploads专属规则,直接绕过了这个判断。
如果需要让浏览器地址栏显示index.php的URL(即外部重定向而非内部转发),可以把规则改成:
RewriteRule ^uploads/.*$ index.php [R=301,L,QSA]
内容的提问来源于stack exchange,提问作者ibo_dc
相关产品推荐
相关产品推荐

