0

我正在使用 Apache 2.2.11 的本地安装,并为文档根目录 ( ) 上方的文件夹设置了别名alias localhost/fp/ => /www/dirs/friendpages。我希望能够将请求重定向到“/favicon.ico”,localhost/fp/favicon.ico而不是localhost/favicon.ico使用 .htaccess 文件localhost/fp。这可能吗?如果可以,我该怎么做?

对 favicon.ico 的引用将来自如下文件: /www/dirs/friendpages/test.htm (localhost/fp/test.htm)=>

<html>
    <head>
          <link href="/favicon.ico" rel="shortcut icon" type="image/x-icon">
    </head>
    <body>
          Page using favicon.ico
    </body>
</html>

我已经使用 RewriteRule 进行了几次尝试。例如,

RewriteRule ^/favicon.ico$ /www/dirs/friendpages/favicon.ico

...但一直无法找到解决方案。看来我对Pattern到底是什么以及Substitution应该是什么(给定RewriteRule Pattern Substitution)感到困惑。我特别困惑如何设置 RewriteRule 来区分相对文件引用,例如通过上面的链接标记的文件引用与绝对文件引用,如“localhost/fp/favicon.ico”(后者显然不需要重定向)。

我还在我的httpd.conf文件中使用以下内容启用了重写日志记录:

RewriteLogLevel 9
RewriteLog /logs/rewrite.log

...但我得到的只是,当加载上面列出localhost/fp/test.htm的 RewriteRule 时,是这样的:

127.0.0.1 - - [04/Nov/2011:05:09:51 --0700] [localhost/sid#14f44f8][rid#2619268/initial] (3) [perdir /www/dirs/friendpages/] strip per-dir prefix: /www/dirs/friendpages/test.htm -> test.htm
127.0.0.1 - - [04/Nov/2011:05:09:51 --0700] [localhost/sid#14f44f8][rid#2619268/initial] (3) [perdir /www/dirs/friendpages/] applying pattern '^/favicon.ico$' to uri 'test.htm'
127.0.0.1 - - [04/Nov/2011:05:09:51 --0700] [localhost/sid#14f44f8][rid#2619268/initial] (1) [perdir /www/dirs/friendpages/] pass through /www/dirs/friendpages/test.htm

我发现实现所需结果的另一种方法(没有硬编码适当的引用本身)是设置一个虚拟主机(而不是简单地使用别名),但我的直觉是,这也应该可以使用mod_rewrite 和 .htaccess ... 到底如何?

4

1 回答 1

0

您的 RewriteRule 对我来说看起来不错,我不确定它为什么不起作用。(你有RewriteEngine on吗?)

由于 /fp 已经别名为 /www/dirs/friendpages,也许您应该只调整链接 href:

  1. 将其更改为相对的:

    <link href="favicon.ico" rel="shortcut icon" type="image/x-icon">
    

    这将隐含地引用 /fp/favicon.ico。

  2. 将其更改为明确指向 /fp/favicon.ico:

    <link href="/fp/favicon.ico" rel="shortcut icon" type="image/x-icon">
    

无论哪种方式,href 都将指向 /fp/favicon.ico,它将解析为 /www/dirs/friendpages/favicon.ico。如果文件在那里,那么您将不再需要重写规则。

我同意虚拟主机对于这个问题来说太过分了。一个 RewriteRule 或正确的 href 应该是您获取 favicon 所需的全部内容。

于 2011-11-04T13:30:49.353 回答