URL在静态页面上重写

时间:2012-10-05 17:29:19

标签: php wordpress url-rewriting

我有一个永久链接的Wordpress博客。我创建了一个静态页面,显示了一个产品表(www.abc.xx / database /)。如果用户单击其中一个产品,它将打开一个名为“product”的新静态页面,该页面将通过其数据库中的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”不会发货。未设置“product-name”var。任何提示?

1 个答案:

答案 0 :(得分:2)

首先,请检查mod_rewrite,检查apache中是否有<?php phpinfo(); ?>模块。

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

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

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