当占位符为空时重定向正则表达式行为异常

时间:2018-10-25 作者:Florian Walther

我有以下2个重定向处于活动状态:

/code-examples/(.*)
-> /tutorials/android/$1/
以及

/code-examples/android/(.*)
-> /tutorials/android/$1/
第一个选项的位置较高,因此只有在第一个选项不适用的情况下,才会执行第二个选项。如果占位符中有某些内容,即。/code-examples/page1 导致/tutorials/android/page1.

占位符为空时会出现问题。只是/code-examples/code-examples/android 如果没有尾部斜杠,则返回404。对于后面的斜杠,我可以看到它在末尾添加了第二个斜杠,这会导致/tutorials/android//.

如何使重定向在占位符中有或没有内容的情况下正常工作?

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

正则表达式模式的问题:

/code-examples/(.*)
/code-examples/android/(.*)
只有当结束斜杠(/) URL中存在;e、 g.:

# Example 1: $1 is \'page1\'
/code-examples/page1
/code-examples/android/page1

# Example 2: $1 is \'\' (empty)
/code-examples/
/code-examples/android/

# Example 3
# No matches because the ending / is not present.
/code-examples
/code-examples/android
其中“占位符”(即。(.*)) 匹配page1 在第一个示例中,以及\'\' (即空字符串)在第二个示例中。

要实现这些目标:

/code-examples
/code-examples/android
您可以使用(?:/?(.*)|\\b) 而不是/(.*), 像这样:

/code-examples(?:/?(.*)|\\b)
/code-examples/android(?:/?(.*)|\\b)
但是由于您重定向到相同的URL(/tutorials/android/$1/), 您可以这样组合这些正则表达式模式:

/code-examples(?:/android|)(?:/?(.*)|\\b)
在哪里/code-examples(?:/android|) 匹配其中一个/code-examples/code-examples/android.

我用重定向插件添加了重定向。

我想你在工具上有这样的东西→重定向(&R);重定向页面(中wp-admin):

现在,使用组合的RegEx模式,删除第二个重定向,并编辑第一个重定向,如下所示:

注意:对于类型和组设置,只需使用现有设置

Resources:

<重定向正则表达式:https://redirection.me/support/redirect-regular-expressions/

  • https://regexr.com/41vch &mdash;用于测试组合的RegEx模式。但请注意,在RegExr上,您需要使用\\/ 而且不仅仅是/. 一、 e.逃离/ 使用\\.

  • 结束

    相关推荐

    Redirection problems

    请帮助我克服重定向问题。我需要在子域上工作,而不是在主域上工作,但这里两个域是不同的。我所做的是-将所有(website.com)文件复制到另一个子域(demo.websiteA.com),并根据wp配置更改数据库名称。php文件。但每当我尝试打开演示时。网站a。com它重定向到网站。com公司请帮帮我提前感谢