301 从 /%anyfolder%/ 重定向到 /Specific folder/ - Apache

301 Redirect from /%anyfolder%/ to /Specific folder/ - Apache

提问人:level42 提问时间:1/9/2020 最后编辑:anubhavalevel42 更新时间:1/9/2020 访问量:41

问:

我有一个网站,里面有一堆旧的域名路径。例如。

https://example.com/path1/file.html

https://example.com/path2/file.html

https://example.com/path3/file.html

https://example.com/path4/file.html

我想将所有流量从任何路径重定向到指定路径

https://example.com/my-new-path/file.html

我在htaccess文件中尝试了以下操作

RedirectMatch 301 ^.*/file.*$ /my-new-path/

但是,这会创建一个重定向循环,我理解为什么。问题是,我不知道如何解决这个问题。

我怎样才能为.*任何东西创建一个捕获所有重定向,除了?my-new-path

正则表达式 .htaccess 重定向 http-status-code-301

评论


答:

2赞 anubhava 1/9/2020 #1

您可以使用负前瞻正则表达式,如下所示:

RedirectMatch 301 ^/(?!my-new-path/)[\w-]+/(file\..+)$ /my-new-path/$1

(?!my-new-path/)是使用 except 匹配下一个模式的否定 lookahead 断言。[\w-]+my-new-path

请确保使用新浏览器或清除浏览器缓存来测试此规则。

评论

1赞 level42 1/10/2020
对不起,因为其他事情被拉走了,我很快就会测试一下,让你知道,我认为这就足够了。谢谢!
0赞 RavinderSingh13 10/21/2020
您好 anubhava 先生,您能否让我知道如果我使用 RewriteCond 和 RewriteRule 方法并在那里使用重定向是否会有所不同?对不起,因为我是新手,所以在这里问你,谢谢。
0赞 anubhava 10/21/2020
当然,您也可以使用基于规则的规则。mod_rewrite