2011-11-15 40 views
1

我有一个重写规则.htaccess(它工作正常),我想添加为WordPress wp_rewrite - 主要是为了便携性和用户的方便...问题是如何正则表达式模式有看起来像.......htaccess WP_Rewrite正则表达式模式

RewriteCond %{REQUEST_URI} ^/services/rest/(.*)$ 
RewriteRule ^(.*)/(.*)/(.*)$ wp-content/plugins/some_plugin/api.php?action=$3 [L,NC] 

,我将需要大约看起来像这样的语法:

$newrules = array('^/services/rest/(.*)' => mAPI_PLUGIN_URL.'/socket.php?action=$matches[1]'); 

任何建议如何解决或如何改进呢?

+0

你说它工作正常,那么究竟是什么问题?请澄清你的问题。 –

+0

.htaccess工作正常(第一代码片段) - 我正在寻找WP重写语法(第二代码片段)...为推荐:http://codex.wordpress.org/Class_Reference/WP_Rewrite –

回答

2

添加在您的脚本/主题下面的代码:

add_action('init', 'add_rewrite_rule'); 
add_filter('query_vars', 'query_vars'); 
add_filter('wp_head', 'rooter'); 

function add_rewrite_rule() 
{ 
    add_rewrite_rule('services/rest/(.*)', 'index.php?my_action=$matches[1]', 'top'); 
} 

function query_vars($query_vars) 
{ 
    $query_vars[] = 'my_action'; 
    return $query_vars; 
} 

function rooter() 
{   
    if(get_query_var('my_action')) 
    { 
     // Do your tasks here 
    } 
} 

在我的情况下,它是因为我已经为个人使用而开发的一个插件,做工不错。

+1

同时我来得出的结论是,这可能是不可能的设计:http://wordpress.stackexchange.com/questions/30386/where-do-i-use-add-rewrite-rule ...因为我不需要重新 - 通过index.php写入(基本上需要一个excluded路径和最后一部分作为查询参数)。 –

+0

WordPress是单一入口点应用程序,这就是为什么你必须使用index.php。 在路由器内,您可以加载您想要运行的文件,传递给该变量并执行所有操作。 最后,您可以在某处将die()添加到您想要在ordeer中运行的脚本中,以便不显示主页。你也可以用这个文件做任何你喜欢的事情,例如我们添加你自己的HTML等等 –

+0

我明白你的意思,但在这种情况下,使用WP的路由器并不是一个进步 - b/c它是100%结束脚本(性能)。即使这不是“用户友好” - 我会坚持使用.htaccess ...仍然可以添加替换.htaccess文件到安装例程。 –