【问题标题】:.htaccess to WP_Rewrite regex pattern.htaccess 到 WP_Rewrite 正则表达式模式
【发布时间】:2016-11-01 19:22:12
【问题描述】:

我在 .htaccess 中有一个重写规则(它工作正常),我想将它添加为 WordPress 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]');

有什么解决方法或改进方法的建议吗?

【问题讨论】:

  • 你说它工作正常,那到底是什么问题?请澄清您的问题。
  • .htaccess 工作正常(第一个代码 sn-p)-我正在寻找 WP 重写语法(第二个代码 sn-p)... 推荐:codex.wordpress.org/Class_Reference/WP_Rewrite

标签: php wordpress .htaccess url-rewriting


【解决方案1】:

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

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
    }
}

就我而言,它适用于我为个人使用而开发的插件。

【讨论】:

  • 同时我得出的结论是,这可能是设计上不可能的:wordpress.stackexchange.com/questions/30386/… ...因为我不需要通过 index.php 重写(基本上需要排除路径和最后一部分作为查询参数)。
  • WordPress 是单入口点应用程序,这就是您必须使用 index.php 的原因。从路由器中,您可以加载您喜欢运行的文件,将变量传递给该变量并执行所有操作。最后,您可以在您喜欢运行的脚本中的某个位置添加 die() 以不显示主页。你也可以用那个文件做任何你喜欢的事情,比如我们添加你自己的 HTML 等等
  • 我明白你的意思,但在这种情况下,使用 WP 的路由器并不是真正的进步 - b/c 它是一个 100% 的后端脚本(性能)。即使它不是那么“用户友好” - 我会坚持使用 .htaccess ...仍然可以将替换 .htaccess 文件添加到安装例程中。
  • 但是,你的答案仍然是正确的——尽管事实上只能将所有内容重写到同一个入口点......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多