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输出文件url中的变量时,thumbnail.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]

那么你的网址就是:

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

当你打印出 的值时url,你会得到http://www.example.com/.png

于 2012-12-15T19:23:32.350 回答