如何阻止HTACCESS重写目录中图片路由?解决图片无法访问问题
解决.htaccess拦截静态图片请求的问题
看起来你的.htaccess规则没有排除真实存在的静态文件,导致请求help.gif这类文件时也被重定向到了index.php,而index.php没有处理这类文件请求,所以返回空白页面。
问题原因
你当前的RewriteRule ^(|/)$ index.php?url=$1规则虽然看起来只匹配空路径或根目录,但如果你的.htaccess还有未展示的宽泛匹配规则,或者服务器配置导致规则作用范围超出预期,就会把静态文件的请求也转发到index.php,最终无法正常加载图片。
解决方案
修改你的/ASE目录下的.htaccess文件,添加条件排除真实存在的文件和目录,这样只有当请求的路径不是真实文件/目录时,才会执行重写规则:
RewriteEngine On # 排除已经存在的文件(比如help.gif、style.css等) RewriteCond %{REQUEST_FILENAME} !-f # 排除已经存在的目录 RewriteCond %{REQUEST_FILENAME} !-d # 仅重写空路径或根目录到index.php RewriteRule ^(|/)$ index.php?url=$1 [L]
如果你的需求是把所有子路径都传递给index.php的url参数(而不仅仅是根目录),可以把最后一行的规则改成:
RewriteRule ^(.*)$ index.php?url=$1 [L]
调整后,当你访问http://127.0.0.1/ase/ts/help.gif时,服务器会直接返回这个真实存在的图片文件,不会被重写到index.php,图片就能正常加载了。
另外,你可以通过浏览器开发者工具的网络面板查看图片请求的状态码:如果返回200但内容空白,说明确实被重写到了index.php;如果返回404,那可能图片本身的路径有误,需要确认图片是否真的放在/ASE/ts/目录下。
内容的提问来源于stack exchange,提问作者Je Boi Jesser
相关产品推荐
相关产品推荐

