我使用以下内容将所有页面从旧的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
再次:清除浏览器缓存然后测试它。