Regex .htaccess URL重写跳过另一个/
我的.htaccess文件中有以下代码Regex .htaccess URL重写跳过另一个/,regex,.htaccess,expression,Regex,.htaccess,Expression,我的.htaccess文件中有以下代码 RewriteEngine on RewriteRule ^thumbnail/(.*).png thumbnail.php?url=$1 [NC] 它所做的就是把 http://mydomain.com/thumbnail.php?url=http%3A%2F%2Fwww.example.com%2F 进入 但是当我在thumbnail.php文件中退出url变量时,它会返回 http:/www.example.com/NOThttp://www.e
RewriteEngine on
RewriteRule ^thumbnail/(.*).png thumbnail.php?url=$1 [NC]
它所做的就是把
http://mydomain.com/thumbnail.php?url=http%3A%2F%2Fwww.example.com%2F
进入
但是当我在thumbnail.php
文件中退出url
变量时,它会返回
http:/www.example.com/
NOThttp://www.example.com/
另一个
/
去了哪里?因为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
因为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
您的意思是它将../thumbnail/../code>转换为../thumbnail.php?url=…
,而不是相反?您可能希望将^thumbnail/(.*).png
替换为^thumbnail/(.*)\.png
(.png
->\.png
)你的意思是它将../thumbnail/../code>转换为../thumbnail.php?url=../code>,而不是反过来?你可能想用^thumbnail/.png/.png>^thumbnail/.png
(.png>->->.png
)