.htaccess - 将站点强制为 HTTPS,某些页面和 Facebook 爬虫除外

标签 .htaccess http ssl https

有几个与此类似的问题,但没有一个真正涵盖我需要做的所有事情,我有点不知所措! 我有一个现有的 wordpress 网站。我想将主页和任何 子页面强制为 HTTPS,但将现有 子页面(大约 20 个)强制为 HTTP。原因是这些子页面有很长的 Facebook 评论线程,我不想丢失,而且规范的解决方法只保留喜欢/分享,而不保留评论。要保留点赞/分享,Facebook 爬虫需要能够访问主页的 HTTP 版本。

所以我需要为 htaccess 编写代码以启用: 1. 强制网站通常为 HTTPS 2. 强制某些页面为 HTTP 3. 允许 Facebook 爬虫访问主页的 HTTP 版本(仅限)。

非常感谢任何帮助。 编辑添加了我认为我会尝试但没有尝试的代码:

RewriteEngine On 
# Go to https for all but existing subpages
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^ page1 | page2 | page3 $ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

# Go to http for existing subpages 
RewriteCond %{SERVER_PORT} !80 
RewriteCond %{REQUEST_URI} ^ page1 | page2 | page3 $ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R,L]

不知道在哪里放置 Facebook 爬虫异常,也不知道我是否有正确的语法来排除页面,记住它是一个 wordpress 网站。

最佳答案

可以查看facebook爬虫用户代理,list here .

# Go to http for home page if Facebook Crawler
RewriteCond %{SERVER_PORT} !80
RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit|Facebot
RewriteRule ^$ http://www.example.com/ [R,L]

RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit|Facebot
RewriteRule ^$ - [L]

# Go to https for all but existing subpages
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/(page1|page2|page3)$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

# Go to http for existing subpages 
RewriteCond %{SERVER_PORT} !80
RewriteCond %{REQUEST_URI} ^/(page1|page2|page3)$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R,L]

关于.htaccess - 将站点强制为 HTTPS,某些页面和 Facebook 爬虫除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48042280/

相关文章:

php - 除非首字母大写,否则 Mod_rewrite 不适用于某些规则? HTTPS服务器

php - .htaccess 问题,我无法删除 .php

javascript - 多个 GET 调用的性能影响与从服务器以 JSON 格式向 AJAX 发送更复杂的 POST/GET 请求

java - Camel HTTP 端点 : How to set URL-String to POST Parameter

ssl - Mac 上的 Safari 有 SSL 证书问题,其他浏览器没问题

ssl - nginx 反向代理 - 仅适用于/

php - 像这样设置我的网站是不是一个坏主意?

apache - 如何在子目录 (.htaccess) 中使用不同的密码

unit-testing - 创建测试请求时如何模拟简单的 POST 正文

java - 获取 javax.net.ssl.SSLException : Received fatal alert: protocol_version while scraping data using Jsoup