代码之家  ›  专栏  ›  技术社区  ›  Solomon Closson

正则表达式匹配url中的所有.php文件扩展名,除非在管理部分找到

  •  1
  • Solomon Closson  · 技术社区  · 6 年前

    如果找到.php文件扩展名,我需要将live站点上的所有流量重定向到没有.php文件扩展名的相同URL。但是,由于这是一个wordpress站点,我需要排除wp-login.php和在包含wp admin/*的url中找到的任何.php扩展名。

    目前,它匹配所有的.php文件扩展名 (.*).php /$1

    但是,如何排除wp-login.php和任何时候包含wp admin并以.php扩展名结束的url?

    以下是我尝试排除wp-login.php的内容,但不起作用,只是不确定如何做到这一点: (\/)(^[wp\-login])?(.*).php /$1

    如何正确地做到这一点?并排除url中以.php结尾的任何字符串的wp admin文件夹?

    例如:

    /testing.php - Needs to Match 
    /wp-login.php - Should not Match 
    /wp-admin/edit-post.php - Should not Match 
    /wp-admin/tools.php?page=testing.php - Should not Match 
    /product/category/testing.php - Should Match
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   delboy1978uk    6 年前

    这是你需要的正则表达式:

    ^\/(?!wp-login|wp-admin).*\.php$
    

    在这里查看结果 https://regex101.com/r/f4GWDB/2/

    /testing.php   MATCH
    /wp-login.php  X
    /wp-admin/edit-post.php   X
    /wp-admin/tools.php?page=testing.php   X
    /product/category/testing.php   MATCH
    
        2
  •  0
  •   Sven Hakvoort    6 年前

    可以使用以下正则表达式:

    ^\/((?!(wp-login|wp-admin)).*)\.php$
    

    您可以看到regex的验证 here

    /testing.php                           -  matches
    /wp-login.php                          -  does not match
    /wp-admin/edit-post.php                -  does not match
    /wp-admin/tools.php?page=testing.php   -  does not match
    /product/category/testing.php          -  matches