2011-11-15 41 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文件到安裝例程。 –