mod_rewrite导致glob()拇指图像不再显示?

时间:2014-08-09 08:53:57

标签: php apache .htaccess mod-rewrite

我有一个包含大量产品的页面。使用以下链接,我可以根据ID选择一个项目,并查看与该项目相关的规格/图片

http://www.example.com/products/index.php?id=20

这将显示ID为20的产品信息。工作正常,所有图像/规格都显示,没有任何内容被破坏。

但每当我尝试实施任何类型的RewriteRule时(我会解释)我的拇指停止显示。

这是我正在尝试的重写规则示例。我一直保持简单,只是为了解决这个问题:

RewriteRule ^products/(.*)/(.*)/$ /products/index.php?id=$1&model=$2 [L]

然后在/products/index.php中,我的产品链接如下所示:

<a href="/products/$product-id/$product-model-name/">Product Name</a>

这很好用,并给我网址,如:

www.example.com/20/product-model-name/

所选产品的信息通过以下脚本显示(我正在进行消毒等,这样可以缩短测试时间):

if (isset($_GET['id']) && isset($_GET['model'])) {
  $id = $_GET['id'];
  $m = $_GET['model'];
  $get_product_stats = mysqli_query($link, "SELECT products.*, company.company_name FROM products INNER JOIN company ON products.company_id=company.id WHERE products.id='$id' AND products.model='$m'");
$row = mysqli_fetch_assoc($get_product_stats);
    if (!$row) {
        echo 'Error';
        exit();
    }
$company_name = $row['company_name'];
$product_model = $row['model'];
$product_model_abbr = $row['product_model_abbr'];
if ($row['product_model_version'] == NULL) { $image_directory_name = "/products/$company_name/$product_model_abbr/"; } else $image_directory_name = "/products/$company_name/$product_model_abbr (" . $row['product_model_version'] . ")/";

$top = "$image_directory_name" . "top.jpg";
echo "<div><img src='$top'></div>"; // THIS DISPLAYS FINE.

// echo some more item specifications here
// and lastly:

echo '<div>';
  $images = glob($image_directory_name."*_thumb*");
    if (!$images) {
        echo '<p>Currently no images for this product.</p>'; // I get this error
    }
else {
    foreach ($images as $image) {
        $full = str_replace('thumb','full',$image);
        echo '<a href="'.$full.'" target="_blank"><img src="'.$image.'"></a>';
    }
}
echo '</div>';

每种产品的图像('top.jpg',拇指和全尺寸图片)直接存储在:

/products/company name/model name/

所以在上面的代码中,在我实现重写之前,顶部的拇指显示出来,并且显示了底部的一组拇指。实施重写后,顶部拇指显示,底部显示不显示。但它们都在同一个目录中,使用相同的变量来访问它们。

我很困惑。有人请救救我,我长期以来一直在反对这一点。

1 个答案:

答案 0 :(得分:1)

试试这个:
RewriteEngine On RewriteCond %{REQUEST_URI} !(\.png|\.jpg|\.gif|\.jpeg|\.bmp)$ RewriteRule ^products/(.*)/(.*)/$ /products/index.php?id=$1&model=$2 [L]