2015-01-07 76 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