如何使用htaccess更改WordPress站点的页面URL

时间:2013-03-07 作者:Lucky Ali

我需要帮助httaccess重写wordpress站点。我有如下url

http://thewhiterabbit.dk/beta/steder-detail/?id=floos

我希望它像

http://thewhiterabbit.dk/beta/steder-detail/floos

我已经使用id=floos进行了开发,现在我不需要重新开发所有东西,只需要一个规则来更改url

任何帮助都将非常感谢。

1 个回复
最合适的回答,由SO网友:david.binda 整理而成

首先,你不应该使用。使用WordPress时直接访问htaccess。WordPress具有强大的rewrite API 允许您从插件或主题函数中执行这些操作。php

如果在多个页面上需要id=floos,请考虑使用rewrite endpoints:

function makeplugins_add_json_endpoint() {
    add_rewrite_endpoint( \'floos\', EP_PAGES );
}
add_action( \'init\', \'makeplugins_add_json_endpoint\' );
要确定是否设置了地板,请检查如下:

global $wp_query
if ( is_page() && isset( $wp_query->query_vars[\'json\'] )  ) { ... }
如果您只需要为特定页面使用该选项,并且“id”值可以更改,则必须使用标准wp\\U重写内容:

add_filter( \'query_vars\', \'binda_query_vars\' );
function binda_query_vars( $vars ) {
    $vars[] = \'id\';
    return $vars;
}

add_action( \'generate_rewrite_rules\', \'binda_rewrite_rules\' );
function binda_rewrite_rules( $wp_rewrite )
{
    $page = get_post( array( \'post_type\' => \'page\', \'name\' => \'steder-detail\' );
    $wp_rewrite->rules = array(
        \'steder-detail/(.*)/?$\' => $wp_rewrite->index . \'page_id=\' . $page->ID . \'&id=\' . $wp_rewrite->preg_index( 1 ),
    ) + $wp_rewrite->rules;
}
ID的值可以访问,如下所示:

get_query_var( \'ID\' );
PS:两个代码都应该转到函数。php,或者更好site-specific plugin.

结束

相关推荐

与.htaccess身份验证中所需的有效用户相对的是什么

我熟悉使用apache身份验证对文件和目录进行密码保护。我在一个网站上工作,我在同一个域上安装了两个WordPress。一个WP安装在root/public\\u html/另一个安装在子目录中。我们不想合并用户数据库,这就是为什么我们使用单独的WP安装。问题是我想用密码保护wp登录。php文件在主目录上安装,但不在子目录上安装。我继续向我的添加了以下代码。我的public\\u html目录中的htaccess文件。AuthName \"Admins Only\" AuthUserFile /p