0

Apache 2.2.11 のローカル インストールを使用しており、ドキュメント ルート ( alias localhost/fp/ => /www/dirs/friendpages) の上のフォルダーにエイリアスを設定しました。の .htaccess ファイルではlocalhost/fp/favicon.icoなく、リクエストを「/favicon.ico」にリダイレクトできるようにしたいと考えています。これは可能ですか?もしそうなら、どうすればいいですか?localhost/favicon.icolocalhost/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

...しかし、解決策を見つけることができませんでした。正確にP​​atternとは何か、Substitutionはどうあるべきかについて混乱しているようです(与えられたRewriteRule Pattern Substitution)。上記のリンクタグを介した相対ファイル参照と「localhost/fp/favicon.ico」のような絶対参照を区別するRewriteRuleを設定する方法について特に混乱しています(後者は明らかにリダイレクトを必要としません)。 )。

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だけです。

于 2011-11-04T13:30:49.353 に答える