我已经构建了一个AngularJS应用程序,它包含的视图可以被认为是不同的页面,但该应用程序是单页面应用程序,因为该页面不会重新加载。Ajax生成的内容和Facebook抓取
我已阅读过使用转义片段URL将搜索引擎重定向到页面快照。我的问题是,当我尝试在Facebook上分享我的应用中的一个页面时,它返回一个404,如使用Facebook's open graph debug tool可以看到的。
我的应用程序有一个Larvel后端馈送到AngularJS前端,我的htaccess看起来像这样将蜘蛛和Facebook重定向到快照。据我所知,这是工作,但我想这不是。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/?(.*)$
RewriteRule ^(.*)$ /%1? [NC,PT]
# Redirect Trailing Slashes...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
</IfModule>
我的网址被格式化为喜欢的用户:domain.com/#!/bike/id/bike+name 和快照的URL是相同的只是没有散列砰即domain.com/bike/身份证/自行车+名称
我真的愣在这一个。任何建议或指针将不胜感激。
我不确定您是否已经在后端尝试类似的东西(不知道Larvel,我使用NodeJS/Express)。无论如何,这个问题必须在后端解决,而不是Angular。 – NicolasMoise
我想我会帮你。我试着做同样的事情,但是因为我在使用#!我可能试图做的网址略有不同。所以你不需要将机器人重定向到服务器端页面,因为你使用的URL结构几乎相同,并且抓取工具被发送到服务器生成的页面,对吧? – BarryWalsh
是的,你只需要找出一种方法让你的服务器解释你的url的'#!/ bike/id/bike + name'部分当用户发出初始请求 – NicolasMoise