.htaccess重写Angular SPA的规则

时间:2015-08-06 17:42:14

标签: angularjs .htaccess mod-rewrite

问题

用户访问的普通网址为:

self.myEditButton.possibleTitles = [NSSet setWithObjects:@"Edit Seats", @"Done", nil];

然而,我正在使用角度路由,因此无法通过Facebook或Twitter进行删除 - 所以我试图将它们转移到服务器上呈现的页面,并显示正确的元标记。

我正在尝试

这就是我正在尝试但它只是在我的服务器上以某种方式创建了一个无限循环,例如Facebook,超时

http://www.example.com/reviews/view-course?courseID=933

tl:dr 基本上,当用户点击在Facebook上分享页面# for social media crawlers RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet) RewriteRule /view-course(.*)$ http://www.example.com/social_scrape2/static-page?courseID=$1 [P] 时,我希望Facebook在刮擦时重定向到http://www.example.com/reviews/view-course?courseID=933

还试过

http://www.example.com/social_scrape2/static-page?courseID=933

This page gave me the idea of how to do this if it helps at all

(添加Angular标签,因为有人做同样的事情可能会贡献)

更新

这是我RewriteRule ^reviews/view-course?courseID=(.*)$ http://www.example.com/social_scrape2/static-page?courseID=$1 [P] 档案

中的所有重写条件
.htaccess

1 个答案:

答案 0 :(得分:0)

你的意思是这样的吗?

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteCond %{QUERY_STRING} ^courseID=([^&]+)
RewriteRule ^reviews/view-course$ /social_scrape2/static-page [L,R]

我已经为发出请求的用户代理添加了重写条件。这意味着只有这些用户代理发起的请求才会触发此重写规则。由于您无法在重写规则中与查询字符串匹配,因此我将该正则表达式移到了自己的条件中。其余的与您尝试的完全相同。这只需要facebook,twitter,pinterest等提出的请求

http://www.example.com/reviews/view-course?courseID=(anything)

将请求重定向

http://www.example.com/social_scrape2/static-page?courseID=(anything)