我有一个永久链接的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。任何提示?
答案 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