正在重定向angular.js路由的.htaccess


Redirecting .htaccess from angular.js route

我使用angular.js应用程序通过外部API获取内容。除了元数据和opengraph值之外,所有操作都很好。由于我们不能重写所有的元数据,我们决定使用一些重定向来在带有元数据的特定页面上发送爬网程序。我们使用这种方法:https://github.com/michaelbromley/angular-social-demo所有这些似乎都有效,但当我们需要从.htaccess文件中获取"路由"参数时,我们什么都没有。我们可以在特定页面上发送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应用程序需要URL中的"#"(由于某些原因,我们无法使用html5mode)。

我们想重定向到页面:oursite.net/some/directory/static-page.php?id=someInfo/3437/46至少,即使重定向到我们的网站可能会更好。net/some/directory/static-page.php?id1=someInfo&id2=3437&id3=46

目前,我们可以重定向到我们的site.net/some/directory/static-page.php(如果我们在.htaccess中强制执行,我们可以传递GET id)。重写cond非常有效。

感谢您的帮助,

我们应用另一种方法来成功。

我们在angular.js应用程序中构建了一个自定义共享URL(如ourdomain.com/one-folder/to-static.php?id1=somme&id2=stuff)

我们使用这些URL在社交网络(FB、Twitter等)中共享内容。我们构建自定义的to-static.php来处理元数据(Twitter卡、开放图等)。

我们可以使用.htaccess从angular.js深度链接将"普通"用户从"重定向到static.php"脚本。类似这样的东西(但我不使用那个):

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文件很难(并非不可能,但如果我们可以用其他方式,那就更好了)。