301 从 /%anyfolder%/ 重定向到 /Specific folder/ - Apache
301 Redirect from /%anyfolder%/ to /Specific folder/ - Apache
我的网站有一堆旧的域路径。例如。
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/
但是,这会创建一个重定向循环,我明白为什么。问题是,我不知道如何解决这个问题。
我如何为 .* 任何东西创建捕获所有重定向,EXCEPT my-new-path
?
您可以像这样使用否定前瞻性正则表达式:
RedirectMatch 301 ^/(?!my-new-path/)[\w-]+/(file\..+)$ /my-new-path/
(?!my-new-path/)
是一个否定的先行断言,它使用 [\w-]+
匹配下一个模式,除了 my-new-path
.
确保使用新浏览器或清除浏览器缓存来测试此规则。
我的网站有一堆旧的域路径。例如。
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/
但是,这会创建一个重定向循环,我明白为什么。问题是,我不知道如何解决这个问题。
我如何为 .* 任何东西创建捕获所有重定向,EXCEPT my-new-path
?
您可以像这样使用否定前瞻性正则表达式:
RedirectMatch 301 ^/(?!my-new-path/)[\w-]+/(file\..+)$ /my-new-path/
(?!my-new-path/)
是一个否定的先行断言,它使用 [\w-]+
匹配下一个模式,除了 my-new-path
.
确保使用新浏览器或清除浏览器缓存来测试此规则。