RewriteRule双斜杠问题

时间:2015-01-07 20:57:58

标签: regex apache .htaccess mod-rewrite

在我的.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:。

之后只有一个斜杠

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

这是mod_rewrite中的预期行为,因为在/中应用模式时,重写引擎会将多个/删除为单个RewriteRule

要克服此行为,请使用RewriteCond %{REQUEST_URI}捕获您的值,如下所示:

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