有一些类似的问题,但没有一个真正涵盖我需要做的一切,我有点过头了! 我有一个现有的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网站。
答案 0 :(得分:0)
您可以查看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]
答案 1 :(得分:0)
谢谢@ben,这几乎完美无缺。我需要做的唯一改变是为我想要重定向的每个页面名称添加斜杠,因为我在没有它们的情况下得到404错误。我假设因为wordpress URL格式化。所以完整的工作代码是:
# 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]
我还在主页的头部添加了一个og:url标记,指示Facebook抓取HTTP版本,保持原始版本和共享计数。