【问题标题】:Regex for url containing parameter包含参数的 url 的正则表达式
【发布时间】:2020-05-26 12:01:31
【问题描述】:

我一直在尝试理解和使用这里几个不同问题的答案,我认为这是同一个问题,但没有运气......

我需要一个正则表达式来匹配包含 &orders-panel 作为 url 一部分的 url,示例 url 将是

https://example.com/wp-admin/post.php?post=xxxx&action=edit&orders-panel

谁能帮帮我?

我正在考虑使用重定向插件,因为我需要在未登录时触发它,所以它会重定向到不同的页面。

谢谢 亲切的问候

【问题讨论】:

  • 您能否提供到目前为止您已经尝试过的内容以及预期的结果是什么?
  • 当然,我已经尝试了很多选项(不幸的是我没有保存它们,因为它们不起作用,但我尝试的最后一个也不起作用):/\b(?: https?:\/\/)?[^\/:]+\/.*?orders-panel 这里的问题是因为我不完全知道我在做什么,我不知道如何修改它以适应什么我需要。基本上我需要一个正则表达式来获取任何包含 &orders-page 的 url 并重定向到 example.com/login (理想情况下,当我还没有登录时,如果我已经登录,不要重定向到任何地方,我认为可以通过重定向插件实现)
  • 我也尝试过另一个 .*\?((.*=.*)(&?))orders-panel,因为它说它在 regexpal.com 中有效,但似乎不是也可以工作。

标签: regex wordpress redirect


【解决方案1】:

您可以使用下面的,这将匹配任何带有 &orders-panel 前缀的 http/https 网址

https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&\/\/=]*)&orders-panel

主要的 URL 模式取自 this answer。因为你只想重定向这应该可以解决问题。

但是,如果您只希望它与特定域一起使用,您可以使用如下所示的内容

https?:\/\/(www\.)?example.com\/.+?(&orders-panel)

听起来您只是将其放入重定向文件中,但如果不是,并且您只想在 URL 包含 &orders-panel 时进行重定向,则不需要正则表达式来执行此操作,一个简单的 contains(在任何语言)就足够了。

【讨论】:

    【解决方案2】:

    感谢您的建议。当我在等待答案时,我想出了一个不同的解决方案,即在我的函数 php 文件中使用一个函数:

    add_action( 'init', 'orders-redirect');
       function orders-redirect() {
         if (!is_user_logged_in() && strpos($_SERVER['REQUEST_URI'], "orders-panel")){
            wp_redirect( site_url('/login/') ); 
            exit; 
        }   
    }
    

    而且似乎工作得很好,我的问题是..你有什么主要原因不使用我的解决方案并使用正则表达式吗?

    【讨论】:

      猜你喜欢
      • 2013-06-18
      • 2018-09-21
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      • 2012-02-26
      • 2014-01-14
      相关资源
      最近更新 更多