繁体   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