0

我有一个带有永久链接的 Wordpress 博客。我创建了一个显示产品表的静态页面(www.abc.xx/database/)。如果用户单击其中一个产品,它会打开一个名为“产品”的新静态页面,该页面通过产品 ID 从数据库中检索并显示有关产品的信息。URL 是 www.abc.xx/database/product?id=1。

但我想要一个像 www.abc.xx/database/product/my-product 这样的 URL 而不是 www.abc.xx/database/product?id=1?有人可以解释它是如何工作的吗?

更新:

我在博客上发布了一些解决方案。我将以下代码段添加到我的 functions.php 文件中。

add_filter('rewrite_rules_array', 'add_rewrite_rules');
function add_rewrite_rules($aRules) {
    $aNewRules = array('database/product/([^/]*)/?$' => $wp_rewrite->index .'index.php?pagename=product&product-name=$matches[1]');
    $aRules = $aNewRules + $aRules;
    return $aRules;
}

add_filter('query_vars', 'add_query_vars');
function add_query_vars($aVars) {
    $aVars[] = 'product-name';
    return $aVars;
}

在我添加的产品页面网站上

if(isset($wp_query->query_vars['product-name'])) {
echo urldecode($wp_query->query_vars['product-name']);
}

现在,如果我调用 www.abc.xx/database/product/my-product,产品页面会打开,但“my-product”未发货。未设置“产品名称”变量。有什么提示吗?

4

1 回答 1

2

首先,请mod_rewrite通过检查<?php phpinfo(); ?>.

在您正在使用的目录中创建一个.htaccess

RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product?id=$1 [L]

如需参考/指南,请访问http://www.workingwith.me.uk/articles/scripting/mod_rewrite

于 2012-10-05T17:35:35.130 回答