[英]Apache Mod_Rewrite Define URL Variables
我一直在寻找解决方案。 我很可能只是没有使用正确的关键字。
我正在尝试重写一些图片网址来清理它们。 简单的东西。
我设法得到了网址
http://example.com/img/thumb.php?h=400&w=550&a=c&src=/img/stock/example.jpg
到
http://example.com/h/400/w/550/a/c/thumb/img/stock/example.jpg
使用RewriteRule ^h/(\\d+)/w/(\\d+)/a/([az]+)/thumb/(.+)$ /img/thumb.php?h=$1&w=$2&a=$3&src=$4 [L]
轻松的东西RewriteRule ^h/(\\d+)/w/(\\d+)/a/([az]+)/thumb/(.+)$ /img/thumb.php?h=$1&w=$2&a=$3&src=$4 [L]
。
但是我想通过在我的.htaccess文件中定义这个部分来进一步清理它: h=400&w=550&a=c
h/400/w/550/a/c
从图像URL中删除h/400/w/550/a/c
以便新的拇指网址只是http://example.com/thumb/img/stock/example.jpg
。
我尝试在mod_rewrite中简单地定义它,但图像不会更改为定义的大小。
RewriteRule ^thumb/(.+)$ /img/thumb.php?h=400&w=550&a=c&src=$1 [L]
这不是正确的方法吗?
最终目标是动态创建各种图像大小,但使用更清晰的网址。
我正在使用我的.htaccess
来包含用干净的URL写的预定义大小。 我正在使用五种不同的尺寸。
以下是创建这5种尺寸的线条:
# CLEAN IMAGE URLS
# CREATE VARYING SIZED IMAGES WITH PREDEFINED SIZES
RewriteRule ^img/thumb/(.+)$ /img/thumb.php?h=400&w=550&a=c&f=2&src=/img/$1 [L]
RewriteRule ^img/small/(.+)$ /img/thumb.php?h=200&w=275&a=c&f=2&src=/img/$1 [L]
RewriteRule ^img/medium/(.+)$ /img/thumb.php?h=500&w=688&a=c&f=2&src=/img/$1 [L]
RewriteRule ^img/large/(.+)$ /img/thumb.php?h=750&w=1031&a=c&f=2&src=/img/$1 [L]
RewriteRule ^img/display/(.+)$ /img/thumb.php?h=600&w=600&a=c&f=2&src=/img/$1 [L]
对于medium
大小的图像,我只需将网址编写为http://example.com/img/medium/folder/img.jpg
并获得尺寸为500x688
的图像。 这使我不得不将上传到服务器的同一图像的5个不同图像。
你是在正确的道路上(你拥有的RewriteRule
是合法的),但是你的thumb.php与GET args的推理可能会有轻微的问题。
如果你添加print_r($_GET);exit;
到你的thumb.php的顶部,然后点击这个网址:
http://example.com/thumb/img/stock/example.jpg
应吐出来:
Array
(
[h] => 400
[w] => 550
[a] => c
[src] => img/stock/example.jpg
)
区别在于src
没有带有前导斜杠,因为您的示例最初用于旧URL:
http://example.com/img/thumb.php?h=400&w=550&a=c&src=/img/stock/example.jpg
所以你可以解决这两种方式之一。 首先,在处理src时只需在php中添加斜杠。 另一种是在重写规则中添加斜杠:
RewriteRule ^thumb/(.+)$ /img/thumb.php?h=400&w=550&a=c&src=/$1 [L]
要么
如果你想重写一个网址:
http://example.com/h/400/w/550/a/c/thumb/img/stock/example.jpg
使用RewriteRule ^thumb/(.+)$
...然后你需要将其更改为:
RewriteRule ^(.*)thumb/(.+)$ /img/thumb.php?h=400&w=550&a=c&src=/$2 [L]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.