【问题标题】:Why this redirect rule doesnt work?为什么此重定向规则不起作用?
【发布时间】:2014-11-28 12:22:14
【问题描述】:

我正在尝试重定向此 URL

example.com/wp-admin/admin-ajax.php?action=flare_get_counts&url=http%3A%2F%2Fexample.com%2Funix-tutorial-402-356-%2F&post_id=34&_wpnonce=8c7fc14726

example.com/unix-tutorial/

为此我写了这个重定向规则

RedirectMatch 301 ^/wp-admin/admin-ajax.php?action=flare_get_counts$ http://example.com/$3

但这条规则不起作用。重定向此 URL 的正确方法是什么?

【问题讨论】:

  • admin-ajax.php,写<?php if($_GET['action'] == "flare_get_counts") die(header("Location:/unix-tutorial")); ?>。容易得多。
  • 您忘记匹配原始 URL 的一部分。您的原始 URL 的结构是什么?这种特殊情况让人难以理解。或许可以举出更多的例子。 :)
  • @NiettheDarkAbsol 是的,更新该项目很有趣......
  • 来自@NiettheDarkAbsol 的糟糕建议
  • @NiettheDarkAbsol 这很糟糕,因为当您升级 wordpress 时,admin-ajax.php 可能会被覆盖。应该用.htaccess中的正则表达式来完成@

标签: php ajax wordpress .htaccess redirect


【解决方案1】:

确保屏蔽您不想被解释为正则表达式的字符:

^/wp-admin/admin-ajax\.php\?action=flare_get_counts$

【讨论】:

  • 这还不够。 action 值后面还有更多参数。
【解决方案2】:

您不能使用RedirectMatch 来匹配QUERY_STRING。请改用mod_rewrite 规则。

您可以在/wp-admin/.htaccess 文件中使用此代码:

RewriteEngine On
RewriteBase /wp-admin/

RewriteCond %{QUERY_STRING} ^action=[^&]+&url= [NC]
RewriteRule ^admin-ajax\.php$ /unix-tutorial/? [L,NC,R=302]

确保在RewriteBase 行下方这是第一条规则

【讨论】:

  • 我想用 action 参数重定向许多 URL。您的解决方案仅将我重定向到 1 页.. 当我将您的代码更改为 RewriteRule ^admin-ajax\.php$ /$3? [R=301,L] 并对其进行测试..我被重定向到主页而不是原始 URL
  • 在不了解$3 包含的内容的情况下,如何使用$3我想用 action 参数重定向许多 URL 您只提供了一个有问题的示例。提供更多示例以获得更好的解决方案。
【解决方案3】:

这是重定向 AJAX 请求的 PHP/WP 方式:

add_action( 'wp_ajax_flare_get_counts',        'so27188591_flare_redirect' );
add_action( 'wp_ajax_nopriv_flare_get_counts', 'so27188591_flare_redirect' );
function so27188591_flare_redirect()
{
    if( isset( $_GET['action'] ) && $_GET['action'] == 'flare_get_counts' )
        wp_safe_redirect( home_url( '/unix-tutorial/' ) );

    exit;
}

【讨论】:

  • 我想用 action 参数重定向许多 URL。您的解决方案仅将我重定向到 1 页 I.E /unix-tutorial/
  • 你可以在action上做一个phpswitch,并用add_query_arg()将其他传递的$_GET变量添加到目标url
  • ... 并动态添加动作,当然:add_action( 'wp_ajax_' . $action, 'my_ajax_callback' )
【解决方案4】:

试试这个:

Redirect 301 /wp-admin/admin-ajax.php?action=flare_get_counts$ http://example.com/$3

希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 2011-11-08
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多