URL重写中出现意外问题

时间:2012-10-17 作者:Rohit Pande

根据中提供的答案How to create custom URL routes? 我使用提供的相同函数创建了重写规则。

add_action( \'init\', \'wpse26388_rewrites_init\' );
function wpse26388_rewrites_init(){
    add_rewrite_rule(
        \'gallery/([0-9]+)/?$\',
        \'gallery?custom_gallery_id=$1\',
        \'top\' );        
}
规则刷新后.htaccess 文件具有以下规则:

RewriteRule ^gallery/([^/]+)/?$ /wordpress/gallery?custom_gallery_id=$1 [QSA,L]
到目前为止,一切都很好,然后我尝试对规则进行一些修改,如

add_action( \'init\', \'wpse26388_rewrites_init\' );
    function wpse26388_rewrites_init(){
        add_rewrite_rule(
            \'topic/([^/]+)/([^/]+)/gallery/([0-9]+)/?$\',
            \'gallery?custom_gallery_id=$3\',
            \'top\' );        
    }
这似乎根本不起作用。有人能帮我解决这个问题吗?提前谢谢。

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

首先,您需要添加custom_gallery_id 如果尚未查询变量,请执行以下操作:

add_filter( \'query_vars\', \'wpse26388_query_vars\' );
function wpse26388_query_vars( $query_vars ){
    $query_vars[] = \'custom_gallery_id\';
    return $query_vars;
}
对于重写规则,您需要加载一个WordPress对象,即一个页面、一个类别等,所有内部重写都必须指向索引。php。如果“主题”、“地点”和“新德里”都是页面,则其外观如下:

function wpse26388_rewrites_init(){
    add_rewrite_rule(
        \'topic/([^/]+)/([^/]+)/gallery/([0-9]+)/?$\',
        \'index.php?pagename=topic/$matches[1]/$matches[2]&custom_gallery_id=$matches[3]\',
        \'top\' );        
}
同时尝试this plugin 用于分析和测试重写规则。

结束

相关推荐

使用管理面板编辑或删除plugin.htaccess

我正在寻找一种方法来编辑或重置.htaccess wordpress站点的文件,无需访问文件系统,只能使用wp admin web界面和/或插件*(如果您感兴趣或认为相关,请参阅下面的背景信息)。在WordPress SE上快速搜索发现了一些有希望的东西:Plugin to edit htaccess file我尝试安装了那里建议的两个插件,但都不起作用**(如果你认为相关的话,请参阅下面解释这些插件为什么不起作用)。在google上搜索,我能找到的唯一另一个有希望的选择是一个名为“WP htaccess