是否可以使用RedirectMatch有条件地重定向URL?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以使用RedirectMatch有条件地重定向URL?相关的知识,希望对你有一定的参考价值。

我使用以下内容将所有页面从旧的URL结构重定向到新的URL结构。

RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/(?!page/)(.+)$ https://sitename.com/$3

旧的结构如下:http://sitename.com/2010/09/file-name/

新结构如下:https://sitename.com/file-name/

重定向工作正常。

我的问题是:是否可以将此重定向与条件一起使用?我想从此重定向中排除所有facebook机器人。

我尝试了以下,但它不起作用:

RewriteCond %{HTTP_USER_AGENT} !facebookexternalhit/[0-9] RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/(?!page/)(.+)$ https://sitename.com/$3

是否可以运行具有条件的RedirectMatch?如果没有,我有什么选择?

答案

RedirectMatch是mod_alias RrwriteCond是mod_rewrite所以,你不能用它。

像这样使用mod_rewrite

RewriteEngine On
RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_USER_AGENT} !facebookexternalhit/[0-9]
RewriteRule ^([0-9]{4})/([0-9]{2})/(?!page/)(.+)$ https://sitename.com/$3 [R=301,L]

这个qazxsw poi条件只能与非qazxsw poi相匹配。

注意:清除浏览器缓存然后测试它。

更新:

如果您想强制所有请求进入RewriteCond %{HTTPS} !=on并应用上述规则,请执行以下操作:

https

再次:清除浏览器缓存然后测试它。

以上是关于是否可以使用RedirectMatch有条件地重定向URL?的主要内容,如果未能解决你的问题,请参考以下文章

根据上一行有条件地重命名值

在 laravel 背包中登录后有条件地重定向用户

根据存储在 data.frame 中的单独字符向量,有条件地重命名列表中的列

RewriteCond REQUEST_URI - ^ 没有按预期工作

如何优雅地重命名 Ruby 中哈希中的所有键? [复制]

在目标中使用带有 HTTP_HOST 的 RedirectMatch