实现RewriteRule后缺少一些图像

时间:2014-08-10 04:54:05

标签: php apache .htaccess mod-rewrite

我一直在研究这个问题,感觉就像无尽的时间,但我觉得我真的很接近解决它。

我已经将我的网站剥离到最低限度的代码来解决这个问题,我想我找到了导致我麻烦的线路,但我不知道为什么它会给我带来麻烦。这是我现在的代码:

//display all products
if (!isset($_GET['id'])) {
    $result = mysqli_query($link, "SELECT products.*, company.company-name FROM products INNER JOIN company ON products.company-id=company.id");
        if (!$result) {
            echo 'Error';
            exit();
        }
}
//display one product
if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $get_item_info = mysqli_query($link, "SELECT products.*, company.company-name FROM products INNER JOIN company ON products.company-id=company.id WHERE products.id='$id'");
        $row = mysqli_fetch_assoc($get_item_info);
            if (!$row) {
                echo 'Error';
                exit();
            }
    $company_name = $row['company-name'];
    $model_abbreviation = $row['model-abbreviation'];
    if ($row['model-version'] == NULL) { $image_directory_name = "$company_name/$model_abbreviation/"; } else $image_directory_name = "$company_name/$model_abbreviation (" . $row['model-version'] . ")/";
}

if (!isset($_GET['id'])) {
    $group = array();
        while ($row = mysqli_fetch_assoc($result)) {
        $group[ $row['company-name'] ][] = $row;
        }
        foreach ($group as $company_name => $models) {
                foreach ($models as $model) {
                        echo "<a href='$model[id]/'>$model[model-abbreviation]</a>";
                }
    }
}
if (isset($_GET['id'])) {
    $top_thumb = "$image_directory_name" . "top.jpg";
    echo "<img src='$top_thumb'>"; echo '</br>';
            $images = glob($image_directory_name."*_thumb*");
            if (!$images) {
                echo 'No images to display.';
            }
            else {
                foreach ($images as $image) {
                $full = str_replace('thumb','full',$image);
                    echo '<a href="'.$full.'" target="_blank"><img src="'.$image.'"></a>';
            }
        }
}

因此,如果我将此代码与我的重写符号结合使用:

RewriteRule ^products/(.*)/$ /products/index.php?id=$1

我转到产品页面,例如localhost / products / 30 /

没有图片显示,但是,在页面源中我可以看到显示图像正在尝试(尽管我的脚本没有错误,只是一个空白页面),只是路径错误 - 它看起来像这样:

<img src='Company Name/Model Name (Model Version)/top.jpg'></br><a href="Company Name/Model Name (Model Version)/A_full.jpg"><img src="Company Name/Model Name (Model Version)/A_thumb.jpg"></a>

所以代码工作正常,但路径错误。行。

所以我将/ products /添加到此行的$ image_directory_name变量中:

if ($row['model-version'] == NULL) { $image_directory_name = "/products/$company_name/$model_abbreviation/"; } else $image_directory_name = "/products/$company_name/$model_abbreviation (" . $row['model-version'] . ")/";

这就是它破裂的地方。

顶部拇指是固定并显示的,但是在尝试使用glob()底部拇指时出现错误 - “没有要显示的图像”。而且消息来源甚至不再显示为试图加载它们了。

因此。我已经非常接近,我已经花了无数个小时。有人知道发生了什么事吗?与我的$ image_directory_name路径或我猜测的glob()代码有关...我非常渴望解决这个问题。

编辑:附加信息:当我在浏览器中访问localhost / products / companyname / productname /时,我从代码中的if(!$ row)行中得到错误。但是我转到localhost / products / companyname / productname / imagename.jpg,图片加载。

更新:我甚至尝试从/ products / companyname / productname /

移动我的所有图片

到/ images / companyname / productname /

底部的拇指仍然没有显示出来。哎呀。

0 个答案:

没有答案