繁体   English   中英

Apache Mod_Rewrite定义URL变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM