如何检测社交网络并重定向到PHP以生成元标记
我有一个网站是托管在 例如: 当facebook/twitter等社交网络机器人试图抓取该网站时,我需要它重定向到一个php文件,该文件生成正确的元标记。我试图用几种方式修改HTACCESS,但经过几次研究,我无法让Facebook/Twitter调试器读取它 .HTACCESS如何检测社交网络并重定向到PHP以生成元标记,php,apache,.htaccess,redirect,http-redirect,Php,Apache,.htaccess,Redirect,Http Redirect,我有一个网站是托管在 例如: 当facebook/twitter等社交网络机器人试图抓取该网站时,我需要它重定向到一个php文件,该文件生成正确的元标记。我试图用几种方式修改HTACCESS,但经过几次研究,我无法让Facebook/Twitter调试器读取它 .HTACCESS RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f Rewrite
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . app/index.html [L]
# allow social media crawlers to work by redirecting them to a server-rendered static version on the page
RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteRule album/(\d*)$ http://lab.example.com/app/opengraph.php [P]
OPENGRAPH.PHP测试
<?php
makePage();
function makePage() {
?>
<!DOCTYPE html>
<html>
<head>
<meta property="og:title" content="Title Test" />
<meta property="og:description" content="Description Test" />
<meta property="og:image" content="http://68.media.tumblr.com/784fb357523d75590261ba6c5c19e6e7/tumblr_o8punbn6Qo1st5lhmo1_1280.jpg" />
<!-- etc. -->
</head>
</html>
<?php
}
?>
希望有HTACCESS经验的人能帮我提供答案,不是你问了什么,而是你想实现什么
“OG元标记将出现在Index.html的每个页面上,只是我需要它在facebook/twitter试图删除它时有所不同。” Twitter有自己的一套og标签
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="">
<meta name="twitter:description" content="">
<meta name="twitter:image" content="">
至于facebook,你需要做的就是检测用户代理
<?php
if(strpos($_SERVER['HTTP_USER_AGENT'],'facebookexternalhit')!==false){
//Do Facebook Og
}
else{
// Do basic Og
}
?>
提供答案,不是你问了什么,而是你想实现什么
“OG元标记将出现在Index.html的每个页面上,只是我需要它在facebook/twitter试图删除它时有所不同。” Twitter有自己的一套og标签
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="">
<meta name="twitter:description" content="">
<meta name="twitter:image" content="">
至于facebook,你需要做的就是检测用户代理
<?php
if(strpos($_SERVER['HTTP_USER_AGENT'],'facebookexternalhit')!==false){
//Do Facebook Og
}
else{
// Do basic Og
}
?>
以最安全的方式为每个请求生成这些元标记。你无法预测现有和未来的机器人将使用哪个用户代理。而且谷歌真的,真的,真的不赞成人们向他们的机器人展示与普通用户不同的东西。你应该在每个pagwe上包括OG元标记,不管它是谁请求的。为每个请求生成元标记是什么意思?目前,我正试图避免使用任何预渲染服务——因为Facebook/Twitter在页面加载后不会读取javascript生成的元标记,所以我尝试采用这种方式。无论如何,我可能会删除谷歌,因为谷歌在单页应用程序中工作得更好。OG元标记将出现在Index.html上的每个页面上,只是我需要它在facebook/twitter试图删除它时有所不同。以最安全的方式为每个请求生成这些元标记。你无法预测现有和未来的机器人将使用哪个用户代理。而且谷歌真的,真的,真的不赞成人们向他们的机器人展示与普通用户不同的东西。你应该在每个pagwe上包括OG元标记,不管它是谁请求的。为每个请求生成元标记是什么意思?目前,我正试图避免使用任何预渲染服务——因为Facebook/Twitter在页面加载后不会读取javascript生成的元标记,所以我尝试采用这种方式。无论如何,我可能会删除谷歌,因为谷歌在单页应用程序中工作得更好。OG元标记将出现在Index.html上的每个页面上,只是我需要它在facebook/twitter试图删除它时有所不同。