2015-01-07 48 views
1

有了这个正则表达式在我的.htaccess:重写规则双斜线问题

RewriteRule ^thumbnails/([0-9]*)/([0-9]*)/(.*)$ lib/thumb.php?w=$1&h=$2&src=$3 [QSA] 

在参数传递一个URL时,我有一个问题。正则表达式除了一个删除所有斜杠。例如:

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 :.之后只有一个斜杠。

任何想法?

谢谢!

+0

这确实应该url编码。 –

+0

我试过了,但正则表达式不适用于urlencoded url: domain.com/thumbnails/243/143/http%3A%2F%2Fimg.youtube.com%2Fvi%2xxxxxxx%2F0.jpg – jonyjm

+0

什么是你的意思是不行吗? '(。*)'应该匹配_anything_,但是apache将'//'折叠为'/',因为它不会指望'http://'没有被编码。 –

回答

2

即由于重写引擎带多个/成单/而在RewriteRule施加图案的预期行为mod_rewrite

为了克服这种行为利用RewriteCond %{REQUEST_URI}捕捉到你的价值观是这样的:

RewriteCond %{REQUEST_URI} ^/thumbnails/(\d+)/(\d+)/(.*)$ [NC] 
RewriteRule^lib/thumb.php?w=%1&h=%2&src=%3 [L,QSA] 
+1

解决了这个问题。谢谢! – jonyjm

+0

不客气,很高兴它的工作。 – anubhava