Php 执行重写规则后缺少某些图像

Php 执行重写规则后缺少某些图像,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我已经在这个问题上工作了好几个小时,但我觉得我真的很快就能解决它了 为了解决这个问题,我已经把我的网站精简到了最简单的代码,我想我已经找到了给我带来麻烦的那一行,但我只是不知道为什么它会给我带来麻烦。以下是我现在的代码: //display all products if (!isset($_GET['id'])) { $result = mysqli_query($link, "SELECT products.*, company.company-name FROM products

我已经在这个问题上工作了好几个小时,但我觉得我真的很快就能解决它了

为了解决这个问题,我已经把我的网站精简到了最简单的代码,我想我已经找到了给我带来麻烦的那一行,但我只是不知道为什么它会给我带来麻烦。以下是我现在的代码:

//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>';
            }
        }
}
然后我进入一个产品页面,比如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>
这就是它断裂的地方

上面的拇指是固定的,可以显示,但是我在尝试glob()下面的拇指时出错-“没有要显示的图像”。源代码甚至不再显示为试图加载它们

所以。我已经非常接近了,我在这上面花了无数个小时。有人知道发生了什么事吗?我猜这与我的$image\u directory\u name path或glob()代码有关……我在心理上非常渴望解决这个问题

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

更新:我甚至尝试从/products/companyname/productname移动我的所有图像/

至/images/companyname/productname/


大拇指还没竖起来。Argh.

将重写规则更改为:RewriteRule^products/(\d)/$/products/index.php?id时会发生什么=$1@JonathanCrowe,使用该规则,我得到“此服务器上找不到请求的URL/products/id/”。$id是一个整数,请尝试重写规则^products/(\d+)/$/products/index.php?id=$1,这样可以工作,但不幸的是,底部的拇指仍然无法加载。非常感谢您的回复。我完全被难住了。
<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>
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'] . ")/";