我正在为我的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]
如果这可以做得更优雅或更智能,请告诉我,否则我会认为这适合我的需求:-)