如何通过.htaccess将/favicon.ico重写为/core/favicon.ico?
问题分析与修复
你的问题出在规则顺序上:
- 那条将所有请求转发到
core/index.php的规则使用了L(Last)标志,一旦请求匹配到这条规则,服务器就会停止处理后续的重写规则。 - 而你把
favicon.ico的重写规则放在了它后面,导致这条规则永远不会被触发。
修复后的.htaccess代码
<IfModule mod_rewrite.c> RewriteEngine on # 先处理favicon的重写请求 RewriteRule ^favicon.ico core/favicon.ico [NC,L] # 再处理全局转发规则 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ core/index.php?url=$1 [QSA,L] </IfModule>
补充说明
- 把
favicon.ico的规则移到最前面,当浏览器请求/favicon.ico时,会先匹配这条规则,L标志会终止后续规则处理,直接返回/core/favicon.ico的内容。 NC标志确保匹配不区分大小写(比如FAVICON.ICO也能被正确处理)。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

