【问题标题】:.htaccess Rewrite rule for Angular SPA.htaccess Angular SPA 的重写规则
【发布时间】:2015-08-07 04:17:00
【问题描述】:

问题

用户访问的正常网址是:

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

但是,我使用的是角度路由,因此无法被 Facebook 或 Twitter 抓取 - 所以我试图将它们转移到服务器上呈现的具有正确元标记的页面。

我正在尝试什么

这是我正在尝试的,但它只是以某种方式在我的服务器上创建了一个无限循环,例如 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]

tl:dr 基本上,例如,当用户点击在 Facebook 上分享页面 http://www.example.com/reviews/view-course?courseID=933 时,我希望 Facebook 在抓取时被重定向到 http://www.example.com/social_scrape2/static-page?courseID=933

也试过了

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

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

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

更新

这是我.htaccess文件中的所有重写条件

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 [P]

#angular html5
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*) /reviews/index.html [NC,L]

【问题讨论】:

    标签: angularjs .htaccess mod-rewrite


    【解决方案1】:

    你的意思是这样的?

    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)
    

    【讨论】:

    • 这会重定向所有人,不是吗?不幸的是,它实际上并没有做任何事情
    • @DarrenSweeney 然后可以添加检查用户代理的条件。这仅在规则位于文档根目录时才有效。
    • 谢谢你,但恐怕不明白 - 重写条件对我来说甚至不是一个强项
    • 再次感谢 Jon,但仍然一无所获 - 我从 Facebook Error parsing input URL, no data was cached, or no data was scraped. 得到这个 - 我的实际 URL 是 http://www.snaphookgolf.com/reviews/view-course?courseID=933 - 将完整的 .htaccess 文件添加到问题
    • @DarrenSweeney 你启用了 mod_proxy 吗?
    猜你喜欢
    • 2015-02-09
    • 2020-06-09
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多