Apache MatchRedirect 异常正则表达式

Apache MatchRedirect 异常正则表达式

我想要将任何 Https 且不以“system_”开头的 URL 重定向到与 http 相同的 URL。

例如这个网址:

https://exsite.tld/some/thing/that/not/start/with/pattern

到 :

http://exsite.tld/some/thing/that/not/start/with/pattern

但是这个网址:

https://exsite.tld/system_aas3f4

不应该重定向。

我尝试:

  RedirectMatch  ^/?((?!(system_)).*)  http://exsite.tld/$1

但不起作用。我不知道问题出在哪里。

答案1

请使用 rewrite 代替。尝试类似

RewriteEngine on
RewriteCond %{HTTPS} =on
RewriteCond %{REQUEST_URI} !^/system_
RewriteRule ^/(.*) http://exsite.tld/$1 [R=301,L]

应该可以。请在实际环境中实施之前进行测试。

这些规则规定:1. 启用重写引擎,2. 检查 HTTPS 是否开启,3. 检查 URI 路径是否不以 开头system_。如果两个都如果以上两个条件成立,则对所有剩余 URI 重写为域的 http 版本。

相关内容