我正在使用 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 ... 到底如何?