首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用RedirectMatch有条件地重定向URL?

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

Stack Overflow用户
提问于 2018-03-13 07:24:12
回答 1查看 168关注 0票数 0

我使用以下方法将所有页面从旧的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?如果没有,我有其他选择吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-13 08:53:22

RedirectMatch is mod_alias RrwriteCond is mod_rewrite所以,您不能使用它。

只像这样使用mod_rewrite

代码语言:javascript
复制
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]

RewriteCond %{HTTPS} !=on条件仅与无https匹配。

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

更新:

如果您想将所有请求强制到https中并同时应用上述规则,请执行以下操作:

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_USER_AGENT} !facebookexternalhit/[0-9]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_USER_AGENT} !facebookexternalhit/[0-9]
RewriteRule ^([0-9]{4})/([0-9]{2})/(?!page/)(.+)$ /$3 [R=301,L]

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49250436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档