1

好的,这就是我想要做的。

在我的网站上,我上传了一组用作头像的图像。这些网站通常要求不同的大小,并且对他们接受什么样的 URL 非常挑剔。

我想要做的是从 Gravatar 服务器获取 Gravatar 图像,并使用自定义 URL、动态或缓存提供它。

我的 Gravatar 网址为 100x100px 的图像:

http://gravatar.com/avatar/b6e428090e62182266a4e9dd87297ee1.png?s=100

我想为网站提供的东西,或多或少:

http://alenonimo.com.br/avatar/avatar100.png

现在让我解释一下我在这里试图解决的问题,因为它很有趣。

一些网站接受第三方的头像图像 URL,如 phpBB 等。他们也有他们喜欢的不同尺寸,如 100x100 像素、120x120 像素、200x200 像素等。但是,如果 URL 上带有“s”变量,他们拒绝接受 Gravatar URL,该变量定义了所提供图像的大小来自 Gravatar。默认大小始终为 80x80 像素,没有该选项。

所以我想为这些网站提供 Gravatar 图像并在 URL 上定义大小,以某种方式它不会注意到来自 Gravatar 的图像生成器。我希望这些网站认为图像实际上来自我的网站。它可以让我为那些不接受 Gravatar 的网站设置大小,幸运的是,我只需转到 Gravatar 就可以一次更改所有这些网站上的所有头像图像。

我很确定它可以使用 Apache 的 RewriteEngine 来完成,但我缺乏代码来完成它。我在网上找到的所有示例都将内容从同一站点重定向到同一站点的其他位置,但事实并非如此。我还想确保 size 属性或多或少是一个有效的数字,而不是接受任何东西。因此,一个名为“100.png”的文件可以,但“banana.png”则不行。

这本身会很有趣,但它发生了另一件事。如果网站不接受 PNG 文件但接受 JPG 或 GIF 文件怎么办?可能不会发生在只显示图像的网站上,但如果我也可以向从 URL 上传的网站提供图像,那对我来说会很有趣。此外,即使 Gravatar 离线,确保某些内容也能显示出来也可能很有趣,比如缓存系统。这可以通过 PHP 实现,但我不确定它会有多复杂。

有人可以帮我解决 RewriteEngine 规则吗?或者甚至给我一些关于如何制作这个 PHP 脚本的指导?这里的其他人会不会很有趣?

4

1 回答 1

2

在这里,您需要让您的服务器侦听扩展名为 .png 的 .php 文件,这可以使用 .htacces 轻松完成

RewriteEngine on
RewriteRule ^avatar/([a-z,A-Z,0-9,-_]+)$ index.php?avatar_param=$1

php脚本

<?php

if(isset($_GET['avatar_param']))
{
    $avatar_size = filter_var($_GET['avatar_param'],FILTER_SANITIZE_NUMBER_INT);
    $user_email_hash = 'b6e428090e62182266a4e9dd87297ee1';

    $get_gravar_image = 'http://gravatar.com/avatar/'.$user_email_hash.'.png?s='.$avatar_size;
    echo '<img src="'.$get_gravar_image.'" />';
}

  ?>

通过查看您提供的 url 结构,我使用数字作为图像的大小,只需使用上面的代码即可。

只需尝试使用 url 中的大小,您会发现它是动态的并且工作方式很好

演示

http://thetutlage.com/demo/avatarProblem/avatar/avatar100.png

于 2012-10-15T17:49:35.363 回答