用查询字符串php替换文件URL

时间:2018-02-02 09:26:37

标签: php codeigniter

我的网站上有1000张图片(在编码器中运行),其名称为

My_image_1.png, My_image_2.png ........ My_image_1000.png

并在此网址http://example.com/files/My_image_1.png

中提供

但我希望网址为http://example.com/images?cid=1.png = My_image_1.png 我怎么能在PHP中做到这一点?

这就是我正在尝试的

if ( !function_exists('get_img_by_cid')) {
function get_img_by_cid() {
    if ( isset($_GET['cid']) ) {
        $cid = $_GET['cid'];
        return '/path_to_image/My_image_'.$cid.'.png';
    } else {
        return 'Please specify compound id';
    }
}

}

此函数返回原始路径,但我需要url,如下例所示。

无论我在哪里使用地址栏或img标签

这是一个例子 https://pubchem.ncbi.nlm.nih.gov/image/imgsrv.fcgi?cid=2244

任何帮助或教程都将受到极大关注:)

3 个答案:

答案 0 :(得分:2)

您可以通过以下代码来实现它。

您的网址= http://example.com/images.php?cid=1.png

将以下代码写入images.php文件

<img src="<?php echo "My_image_".$_GET['cid'];?>">

上面的行将显示名为My_image_1.png

的图像

希望这会对你有所帮助

谢谢&amp;此致

答案 1 :(得分:0)

你需要写.htaccess规则:

RewriteCond %{QUERY_STRING} cid=([0-9]+) [NC]
RewriteRule ^images$ /files/My_image_%1.png [L]

修改:

nginx配置

location / {
  if ($query_string ~* "cid=([0-9]+)"){
    rewrite ^/images$ /files/My_image_%1.png break;
  }
}

答案 2 :(得分:0)

基于Rust-Lang-Nursery GitHub Page提供的代码,我和朋友写了这个:

<?php
$file = "My_image_".$_GET['cid'];
$size = getimagesize($file);
$fp = fopen($file, "rb");
if ($size && $fp) {
    header("Content-type: {$size['mime']}");
    fpassthru($fp);
    exit;
} else {
        header("HTTP/1.0 404 Not Found");
}
readfile("{$file}");
?>

有了这个,https://example.com/?cid=1.png将显示你的图像没有任何问题...只要它存储到index.php,否则你的网址类似于https://example.com/index.php?cid=1.png,但有正确的php文件名在网址中。

修改

另外请注意,$file应包含文件的文件夹路径,例如

$file = "/path_to_image/My_image_".$_GET['cid'];

如果这有用,请告诉我,您的问题与我们的问题相同!