如何拥有特定页面模板的自定义URI路径

时间:2016-10-04 作者:Adam B

我有一个名为page\\u system的自定义模板文件。php。我在Wordpress中有一个名为“系统”的页面,它使用这个模板。查看此页面的路径为:

www.mysite.com/system/
我想通过Htaces或其他方式,允许我在路径之后添加任何内容,并将其放入get变量中,以便我可以在我认为合适的情况下使用该变量。我希望它忽略最后一个“/”之后的内置Wordpress路径。

例如,

www.mysite.com/system/variable1/variable2 
在URL栏中看起来是一样的,但实际上会显示

www.mysite.com/system/?getvariables=variable1/variable2
我尝试编辑。htaccess文件到目前为止还没有工作。我最近的失败尝试是:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^\\/system\\/(.*)$ system/?getvariables=$1 [QSA,L]

RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
如果有人能帮助我,我将非常感激!

1 个回复
SO网友:cybmeta

您需要向WordPress添加重写规则。根据您的具体需要,有多种选择。

也许最常用的是add_rewrite_tag()add_rewrite_rule():

add_action( \'init\', \'cyb_rewrite_rules\' );
function cyb_rewrite_rules() {
    add_rewrite_tag( \'%variable1%\', \'([^&]+)\' );
    add_rewrite_tag( \'%variable2%\', \'([^&]+)\' );
    add_rewrite_rule( ^system/([^/]*)/([^/]*)/?\', \'index.php?pagename=$matches[1]&variable1=$matches[2]&variable2=$matches[3]\', \'top\' );
}
现在,如果URL与regext“system/([^/])/([^/])/”匹配,例如:

https://example.com/system/value1/value2
WordPress将查询“系统”页面,您可以使用get_query_var():

$variable1 = get_query_var( \'variable1\' );
$variable2 = get_query_var( \'variable2\' );
两种功能,add_rewrite_tag()add_rewrite_rule(), 是的包装WP_Rewrite 方法。

注意:在WordPress中添加新的重写规则后,需要刷新和重建规则集。这可以通过flush_rewrite_rules() 作用此函数只需执行一次数据库操作,这就是为什么在插件激活/停用挂钩中通常使用此函数的原因:

register_deactivation_hook( __FILE__, \'flush_rewrite_rules\' );
register_activation_hook( __FILE__, \'cyb_activation_hook\' );
function cyb_activation_hook() {
    flush_rewrite_rules();
}
也可以在“设置->永久链接”中刷新重写规则;只需单击“保存”按钮,即可重建重写。

相关推荐

Redirect htaccess

我需要帮助重定向我的页面。例如,我有网站https://example.com. 我需要将内容从https://example.com 到https://example.com/blog. 这不是问题,我通过更改主页URL来做到这一点。这很有效。但现在我需要添加来自旧的重定向https://example.com 到https://xmpl.com.我想用。htaccess,但这不起作用。你们能帮帮我吗?以下是我对此的一些尝试,但两者都不起作用。RewriteEngine On RewriteRu