我目前只有一个product.php页面,该页面在products.php页面上显示每个单独产品的数据
我正在寻找一种方法来清理通过product.php文件显示其数据的每个项目的URL。
当前网址“ rubberholds / product.php?item = item1”
所需的URL“橡胶地/产品/产品一”
products.php
<?php foreach ($limestoneItems as $item => $limestone): ?>
<a href="product.php?item=<?php echo $item; ?>">
<img
src="assets/img/limestone/<?php echo $limestone[img]; ?>.jpg"
alt="<?php echo $limestone[alt]; ?>">
</a>
<?php endforeach ?>
product.php
<?php
if (isset($_GET['item'])) {
$limestoneProduct = $_GET['item'];
$product = $limestoneItems[$limestoneProduct];
}
?>
数组
$limestoneItems = array(
"item1" => array(
title => "Product-One",
img => "product1",
alt => "Product1"
)
);
有人对如何实现这一目标有任何建议吗?我想删除.php扩展名,并用$ limestone [title]替换'?item = item1'
编辑
我用以下代码创建了一个.htaccess文件,该文件无法正常工作:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L]
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^product/([0-9a-zA-Z_-]+) product.php?item=$1 [NC,L]
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^rubberholds/product/?(.*)$ rubberholds/product.php?item=$1 [QSA]
测试数据 :
$limestoneItems = [
'item1' => [
'title' => 'Product-One',
'img' => 'product1',
'alt' => 'Product1',
],
'item2' => [
'title' => 'Product-Two',
'img' => 'product2',
'alt' => 'Product2',
],
'item3' => [
'title' => 'Product-Three',
'img' => 'product3',
'alt' => 'Product3',
],
];
product.php
$title = strtolower($_GET['item']);
$data = array_filter($limestoneItems, function ($v) use ($title) {
$v['title'] = strtolower($v['title']);
return in_array($title, $v);
});
if ($data) {
$key = array_keys($data)[0];
$product = $limestoneItems[$key];
var_dump($product); // Data found
} else {
var_dump('Not found'); // Data not found
}