Regex 重写规则双斜杠问题
在my.htaccess中具有此regexp:Regex 重写规则双斜杠问题,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,在my.htaccess中具有此regexp: RewriteRule ^thumbnails/([0-9]*)/([0-9]*)/(.*)$ lib/thumb.php?w=$1&h=$2&src=$3 [QSA] 我在参数中传递url时遇到问题。regexp删除除一个斜杠以外的所有斜杠。例如: Enter: domain.com/thumbnails/200/143/http://img.youtube.com/vi/xxxxxxx/0.jpg Result: domain
RewriteRule ^thumbnails/([0-9]*)/([0-9]*)/(.*)$ lib/thumb.php?w=$1&h=$2&src=$3 [QSA]
我在参数中传递url时遇到问题。regexp删除除一个斜杠以外的所有斜杠。例如:
Enter: domain.com/thumbnails/200/143/http://img.youtube.com/vi/xxxxxxx/0.jpg
Result: domain.com/lib.tuhmb.php?w=200&h=143&src=http:/img.youtube.com/vi/xxxxxxx/0.jpg
请注意,http后面只有一个斜杠:
有什么想法吗
谢谢 这是
mod_rewrite
中的预期行为,因为在重写规则中应用模式时,重写引擎将多个/
剥离为单个/
要克服这种行为,请使用RewriteCond%{REQUEST_URI}
捕获如下值:
RewriteCond %{REQUEST_URI} ^/thumbnails/(\d+)/(\d+)/(.*)$ [NC]
RewriteRule ^ lib/thumb.php?w=%1&h=%2&src=%3 [L,QSA]
这应该是url编码的。我已经尝试过了,但是正则表达式不能与url编码的url一起使用:domain.com/thumbnails/243/143/http%3A%2F%2Fimg.youtube.com%2Fvi%2xxxxxxx%2F0.jpgWhat您认为它不起作用?(.*)
应该匹配任何内容,但是apache正在将/
折叠为/
,因为它不希望http://
没有编码。查看结果url,它给了我一个来自apache的错误请求抱歉,我犯了一个错误。url看起来像:domain.com/thumbnails/243/143/http%3A%2F%2Fimg.youtube.com%2Fvi%2fxxxxxx%2F0.jpg,它只是说找不到url。。所以我知道正则表达式没有捕捉到它。。。