根目录.htaccess配置重定向至download.php,出现页面未正确重定向错误
解决.htaccess根目录重定向循环问题
看起来你这是踩了重定向循环的坑,主要是.htaccess规则里的两处细节错误导致的,咱们一步步来修复:
1. 修正静态资源后缀的正则匹配错误
你写的\.jpg\.png是用来匹配xxx.jpg.png这种带双重后缀的文件的,而不是单独的.jpg或.png文件!这就导致所有.png后缀的图片、图标都会被错误地重定向到download.php。当download.php页面本身引用这些.png资源时,浏览器就会陷入“请求图片→跳转到download.php→download.php又请求图片→再跳转”的无限循环,自然就弹出“页面未正确重定向”的错误了。
把正则里的后缀部分改成正确的写法,把.jpg和.png分开:
RewriteCond %{REQUEST_URI} !(\.php|\.html|\.css|\.jpeg|\.jpg|\.png|\.js)$
2. 额外排除download.php本身(可选但更稳妥)
虽然理论上.php后缀已经被排除,但为了避免服务器对.php文件的内部处理可能引发的冲突,咱们可以再加一条规则,明确不让download.php被重定向规则匹配:
RewriteCond %{REQUEST_URI} !^/download.php$
修正后的完整.htaccess代码
RewriteEngine On RewriteBase / # 确保download.php本身不被重定向 RewriteCond %{REQUEST_URI} !^/download.php$ # 排除指定后缀的静态资源 RewriteCond %{REQUEST_URI} !(\.php|\.html|\.css|\.jpeg|\.jpg|\.png|\.js)$ # 重定向到download.php并传递原始请求路径 RewriteRule ^(.*)$ /download.php?url=$1 [L,QSA]
为什么子目录时能正常工作?
大概率是子目录下的静态资源(比如图片、样式)刚好都是规则里正确排除的后缀(比如.jpg、.js),没有触发循环;或者子目录里的download.php页面没有引用那些未被排除的资源(比如.png),所以没引发循环问题。
内容的提问来源于stack exchange,提问作者Marios
相关产品推荐
相关产品推荐

