我正在使用angular.js应用程序通过外部API获取内容。一切都很好,除了元数据和opengraph值。 由于我们无法重写所有元数据,因此我们决定使用一些重定向来在具有元数据的特定页面上发送爬虫。我们使用这种方法:https://github.com/michaelbromley/angular-social-demo 一切似乎都有效,但是当我们需要从.htaccess文件获取“route”参数时,我们什么都没有。我们可以在特定页面上发送FB爬虫,但没有信息。
这是我们的.htaccess:
RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteRule the-page-with-angular-app.html(.*)$ http://www.oursite.net/some/directory/static-page.php?id=$1 [P]
以下是我们的网址:
http://www.oursite.net/the-page-with-angular-app.html#/someInfo/3437/46
请注意我们的angular.js应用在网址中需要“#”(由于某些原因我们无法使用html5mode)。
我们希望至少重定向到页面:oursite.net/some/directory/static-page.php?id=someInfo/3437/46,即使最好重定向到oursite.net/some/directory/静电page.php文件ID1 = someInfo&安培; ID2 = 3437&安培; ID3 = 46
目前,我们可以重定向到oursite.net/some/directory/static-page.php(如果我们强制执行.htaccess,我们可以传递GET ID)。重写cond效果很好。
感谢您的帮助,
答案 0 :(得分:0)
我们应用另一种方法来取得成功。
我们在angular.js应用程序中构建自定义共享URL(例如ourdomain.com/one-folder/to-static.php?id1=somme&id2=stuff)
我们使用这些网址在社交网络(FB,Twitter等)内共享内容。我们构建自定义to-static.php来处理元数据(推特卡,开放图等)。
我们可以使用.htaccess来重定向"正常"用户来自" to-static.php"来自angular.js深层链接的脚本。像这样的东西(但我不会用它):
RewriteCond %{HTTP_USER_AGENT} !(facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteRule static.php?id1=(.*)&id2=(.*)$ http://www.oursite.net/the-page-with-angular-app.html#/$1/$2 [P]
我决定在PHP脚本中进行测试并重定向"正常"用户使用PHP方法(我使用这段代码来检测爬虫):https://stackoverflow.com/a/20949242/2207250
我们最终没有使用.htaccess方法,因为我们的客户端安装(第50个网站上的相同angular.js应用程序:joomla网站,wordpress网站,自定义网站,移动应用程序等),这是非常棘手的要求修改htaccess文件(并非不可能,但如果我们可以采取其他方式,那就更好了。)