.htaccess 重定向以不同级别的子目录为目标的规则

4sup72z8  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(127)

我试图写一对夫妇的规则,将取决于数量的子目录的层次存在于一个网址。我有一个规则,工作的一部分,我想要的,另一个为其他部分,但原因相互冲突。
规则及其作用:
此规则将采用如下URL:website.com/base/{WILDCARD}
并将其转发到:website.com/{WILDCARD}

RewriteRule ^base/(.*)$ /$1 [L,NC,R=301]

此规则将采用如下URL:website.com/base/{WILDCARD}/{WILDCARD2}
并将其转发到:website.com/{WILDCARD2}

RewriteRule ^base/([^/]+)/(.*)$ /$2 [L,NC,R=301]

这些规则只有在URL中包含“base”时才生效
任何帮助都将不胜感激!

uwopmtnx

uwopmtnx1#

您可以通过捕获URI中的最后一个路径组件来处理所有这些重定向:

RewriteEngine On

RewriteRule ^(?:procedures|gallery)/(?:.+/)?([^/]+/?)$ /$1 [L,NE,NC,R=302]

验证它工作正常后,将R=302替换为R=301。测试mod_rewrite规则时,避免使用R=301(永久重定向)。
下面是一个regex demo来演示上面使用的正则表达式。

相关问题