gpt4 book ai didi

mysql - htaccess redirectmatch 有条件需要查询数据库

转载 作者:行者123 更新时间:2023-11-29 06:43:19 25 4
gpt4 key购买 nike

在我们的网站上,用户可以上传图片。对于每张图片,我们在数据库中创建一行,其中包含 2 个字段:id 和 32 个字符的唯一代码。我们在数据库中有大约 200.000 张图片,每张图片都保存在某个文件夹中,例如 www.site.com/img一开始我们在这个文件夹中保存图片,用32个唯一字符编码命名图片。例如:www.site.com/img/afjf4lfn4nafjf4lfn4nafjf4lfn4nas.jpg

在第一个 100.000 之后,我们开始将图片保存在以 id 命名的文件夹中:例如:www.site.com/img/123001.jpg

现在我们决定将所有图片移动到 Amazon S3。因此,我们将所有图片复制到 S3,并使用 id 命名所有图片。所以现在S3上所有的图片都是用id命名的。例如: http://d2324324ctqt.cloudfront.net/thumb/95911.jpg

现在我们需要在htaccess中将旧文件夹中的所有图片重定向到S3。

像这样:重定向匹配 301/img/(.*) http://d2324324ctqt.cloudfront.net/thumb/ $1

这只适用于以 id 命名的图片。

那么我如何重定向以 32 个字符代码命名的前 100.000 张图片?为此,我需要查询数据库以检索与 32 个字符代码对应的 ID。

我想我需要这样的东西:Redirectmatch 301/img/(.* if is 32 character lenght) http://www.site.com/retrieveid.php?code= $1

在 retrieveid.php 中,我将执行查询以检索 ID。

有可能吗?

非常感谢

最佳答案

试试用这个代替:

RewriteEngine On

RewriteRule ^img/([a-z0-9]{32})\.jpg$ /retrieveid.php?code=$1 [L]
RewriteRule ^img/([0-9]+)\.jpg$ http://d2324324ctqt.cloudfront.net/thumb/$1.jpg [L,R=301]

第一条规则将考虑 32 个字符代码,内部重写请求到 /retrieveid.php。然后脚本可以重定向浏览器。这节省了 1 次往返和额外的重定向。

但是如果您不想使用 mod_rewrite 并想坚持使用 mod_alias,那么顺序很重要:

RedirectMatch 301 ^/img/([a-z0-9]{32})\.jpg$ http://www.site.com/retrieveid.php?code=$1
RedirectMatch 301 ^/img/([0-9]+)\.jpg$ http://d2324324ctqt.cloudfront.net/thumb/$1.jpg

关于mysql - htaccess redirectmatch 有条件需要查询数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20109400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com