.htaccess:HTTP_USER_AGENT上的条件,然后用动态子域重写


.htaccess: Condition on HTTP_USER_AGENT then rewrite with dynamic subdomain

我正在为我的angularJS项目创建一个静态网页解决方案,在那里我检查.htaccess文件中的HTTP_USER_AGENT,然后将任何爬网程序重定向到一个静态php页面,这样我就可以添加所有必要的元数据。

问题是我使用的是通配符子域,所以我的任何客户端都可以有自己的子域,我不知道如何通过RewriteRule重定向到正确的url。

我的RewriteCond如下所示:
RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Facebot|Twitterbot|Pinterest|Google.*snippet)

我的基本非工作RewriteRule如下所示:
RewriteRule ^stuff/(.*)$ http://example.com/static.php?token=$1 [NC,L]

但我希望它转到请求所在子域上的static.php,所以如果我请求http://subdomain.example.com/stuff?token=my-token,是否可以使重写器转到http://subdomain.example.com/static.php?token=$1,而不仅仅是上面的静态mydomain.com?(上永远不会有请求http://example.com/stuff-所有对stuff的请求都将通过子域)

我在.htaccess方面没有那么丰富的经验,从SO和谷歌上列出的所有答案中我有点困惑。

我通过添加一些代码和一些思考来解决这个问题。

这是我的.htaccess中的三行,对我来说很有用:

RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Facebot|Twitterbot|Pinterest|Google.*snippet) RewriteCond %{HTTP_HOST} ^(.+?)'.example'.com$ RewriteRule ^s/(.*)$ http://%1.sociuu.com/static.php?token=$1 [NC,L]

如果这可以做得更优雅或更智能,请告诉我,否则我会认为这适合我的需求:-)