.htaccess将文件路径favicon.ico重写为core/favicon.ico

px9o7tmv  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(134)

我在写.htaccess语法时做错了一些事情,我不确定到底是什么。
我有一个名为/core/favicon.ico的文件。
现在我希望当浏览器请求/favicon.ico时,服务器显示:/core/favicon.ico
我的.htaccess的内容目前是

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ core/index.php?url=$1 [QSA,L]
    
    RewriteRule ^favicon.ico core/favicon.ico [NC,L]
</IfModule>

前面的重写规则是我的系统运行所必需的。

RewriteRule ^(.*)$ core/index.php?url=$1 [QSA,L]

这条规则很有效。

csbfibhn

csbfibhn1#

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ core/index.php?url=$1 [QSA,L]

RewriteRule ^favicon.ico core/favicon.ico [NC,L]

你基本上只是把规则的顺序搞错了,假设/favicon.ico不存在,所以第一条规则首先将请求重写为core/index.php?url=favicon.ico,然后处理停止。
您需要颠倒这两个规则(并使用反斜杠转义点并添加字符串结束锚)。例如:

RewriteRule ^favicon\.ico$ core/favicon.ico [NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ core/index.php?url=$1 [QSA,L]
  • 旁白:* 这不会重写对“主页”(文档根)的请求,所以想必你有其他东西来处理它?否则,我希望你需要在文件顶部相应地设置DirectoryIndex。例如:
DirectoryIndex /core/index.php

请注意,url参数对于此类请求(到“主页”)将不存在。

相关问题