【发布时间】:2020-01-28 11:40:02
【问题描述】:
我目前有一个 product.php 页面,在 products.php 页面上显示每个产品的数据
我正在寻找一种方法来清理通过 product.php 文件显示其数据的每个项目的 URL。
当前网址“rubberholds/product.php?item=item1”
例如所需的 URL 'rubberholds/product/product-one'
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 扩展名并将 '?item=item1' 替换为 $limestone[title]
编辑
我使用以下代码创建了一个 .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 或类似的东西。
-
修改
products.php,以所需格式输出链接。如果您想将值作为 GET 参数接收,则需要相应地配置一些 URL 重写。 (如果你真的想使用/product.php/product-one,你可以直接从 PATH_INFO 获取值,假设你的服务器没有明确禁用它。)而且由于你不再使用数组键作为你的产品的标识符,您还必须修改从该数组获取产品的代码,您需要通过其title搜索它。 -
rubberholds是另一个 URL 路径段吗? (或主机名?)您的文件结构中的.htaccess文件在哪里? (或者您希望.htaccess文件放在哪里?) -
rubberholds 是 htdocs 中的根文件夹。我的 .htaccess 文件目前在这个根目录中