有几个与此类似的问题,但没有一个真正涵盖我需要做的所有事情,我有点不知所措! 我有一个现有的 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/