簡體   English   中英

Apache mod_rewrite復雜URL正則表達式

[英]Apache mod_rewrite complex URL regex

我想從這樣的網址中創建一個漂亮的網址:

http://example1.com/cimage/webroot/img.php?src=http://example.com/img1.jpg&w=600&h=800&q=60&sharpen&crop-to-fit

因此結果網址一定是這樣的:

http://example1.com/cimage/webroot/img.php/http://example2.com/img1.jpg/600*800/60/sharpen/crop-to-fit

現在我的問題是創建一個用於apache mod_rewrite的正則表達式。 請幫幫我。 謝謝...

根據評論中的討論,這是解決方案:

RewriteRule ^img.php/(https?):/+(.+?(?:\.jpg|\.png))/(\d+)/(\d+)/(\d+)/?([^\/]*)/?([^\/]*)/?‌​([^\/]*)$ img.php?src=$1://$2&w=$3&h=$4&q=$5&$6&$7&$8

演示

這里的邏輯是在字符串的開頭匹配img.php/ ,然后匹配httphttps:一個或多個/ s,主機名和文件名,然后匹配大小,質量等各種參數。

在沒有復雜的正則表達式的情況下處理此問題的另一種方法是執行一個簡單的通用規則,如下所示:

RewriteRule ^img.php\/(.+) img.php?url=$1

然后,您可以使用PHP進行解析,通常使用PHP代碼中的explode()等更簡單的操作。 這種方法特別有意義,尤其是在可能存在其他操作/參數的情況下。 否則,您的正則表達式將開始具有大量捕獲組,從而使其難以閱讀和維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM