2

.htaccessファイルに次のコードがあります

RewriteEngine on
RewriteRule ^thumbnail/(.*).png thumbnail.php?url=$1 [NC]

そしてそれがすることはそれが変わることです

http://mydomain.com/thumbnail.php?url=http%3A%2F%2Fwww.example.com%2F

の中へ

http://www.mydomain.com/thumbnail/http%3A%2F%2Fwww.example.com%2F.png

しかし、ファイル内の変数をecho出力すると、次のようになります。urlthumbnail.php

http:/www.example.com/いいえhttp://www.example.com/

他はどこ/に行きましたか?

4

1 に答える 1

4

http://www.example.com/は(クエリ文字列の一部ではなく)URIパスの一部であるため、apacheはパスを自動的に正規化し、複数の連続するスラッシュを削除します。たとえば、次の場所に移動しようとした場合:

http://www.mydomain.com/thumbnail/foo//////////////bar.png

次に、の値を出力しurlます。これfoo/bar.pngは、URIが処理パイプラインでmod_rewriteに到達する前に、余分なスラッシュが削除されるためです。

または、パーツを削除しhttp://て、書き換えに追加することもできます。

RewriteEngine on
RewriteRule ^thumbnail/(.*).png thumbnail.php?url=http://$1 [NC]

その場合、URLは次のようになります。

http://www.mydomain.com/thumbnail/www.example.com%2F.png

そして、の値を出力するとurl、次のようになります。http://www.example.com/.png

于 2012-12-15T19:23:32.350 に答える