我已经用vuejs创建了一个SPA应用程序。一切都很完美,直到我想在Facebook上分享动态内容。
经过研究,我发现当我为facebook爬虫填充元标签时,我需要另一个文件(在我的例子中是php文件)。在htaccess中,我试图检测到Facebook代理,并重定向到特定文件以填充元标记。
这是我的.htaccess:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.html [NC,QSA]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Crawler
RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Facebot|Twitterbot|Pinterest|Google.*snippet)
RewriteRule cars/carDetail(.*)$ http://website.api.com/v1.0/meta-tags$1 [R=301,L]
但不起作用。当您尝试从https://developers.facebook.com/tools/debug/sharing/ url调试时:
http://website.com/cars/carDetail?id=48未重定向到:
http://website.api.com/v1.0/meta-tags$1谢谢
发布于 2018-07-02 14:57:03
我解决了我的问题。
重定向条件应该在htaccess的顶部。我还在顶部添加了"RewriteBase /“选项:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# 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 cars/carDetail(.*)$ http://website.api.com/v1.0/meta-tags$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.html [NC,QSA]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>https://stackoverflow.com/questions/51083561
复制相似问题