我创建了一个小函数来重写get变量。首先,我创建了“下载”页面,并希望将get变量用于file属性。这是一个工作URL:http://example.com/download/?file=file
但当我使用add\\u rewrite\\u规则使url如下所示时:http://example.com/download/file,它不起作用。
功能:
function createRewriteRules() {
add_rewrite_rule(\'download/([^/]*)\', \'index.php/download/?file=$matches[1]\', \'top\');
}
add_action(\'init\', \'createRewriteRules\');
我还尝试了以下方法:
function createRewriteRules() {
add_rewrite_rule(\'download/([^/]*)\', \'download/?file=$matches[1]\', \'top\');
}
add_action(\'init\', \'createRewriteRules\');
在这两种情况下,$wp\\u query将“file”作为pagename而不是“download”返回。
更新日期:
function createRewriteRules() {
add_rewrite_tag(\'%file%\', \'([^&]+)\');
add_rewrite_rule(\'download/([^/]+)/?$\', \'index.php/?pagename=download&file=$matches[1]\', \'top\');
}
当索引时,再刷新不会在18次方起作用。php/?pagename=下载(&N);file=文件有效。重写规则也被添加到。htaccess文件。
最合适的回答,由SO网友:cybmeta 整理而成
您的重新提交规则不正确。应该是(假设download
是页面的名称或slug):
add_rewrite_rule(\'^download/([^/]+)/?$\', \'index.php?pagename=download&file=$matches[1]\', \'top\');
此外,您需要声明
file
查询变量A示例和工作代码:
function createRewriteRules() {
add_rewrite_tag(\'%file%\', \'([^&]+)\');
add_rewrite_rule(\'^download/([^/]+)/?$\', \'index.php?pagename=download&file=$matches[1]\', \'top\');
}
add_action(\'init\', \'createRewriteRules\');
注意:添加新的重写规则后,不要忘记刷新重写规则。