我的.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/
其他/
去了哪里?
答案 0 :(得分:3)
因为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