.htaccess:用params将rewriteCond改为同一URL内的另一个页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.htaccess:用params将rewriteCond改为同一URL内的另一个页面相关的知识,希望对你有一定的参考价值。

我的.htaccess对于爬虫和搜索引擎来说是一个条件,它将它们带到一个“静态”页面,在那里他们可以抓取所有内容。

到目前为止,我已经拥有了我的域{client} .realdomain.com,其中{client}是一个客户端的子域。

然后,当客户端在社交网络上共享某些内容时,例如facebook / linkedin他们的抓取工具被带到我的.htaccess有以下条件(这有效)

URL示例:http://{client}.realdomain.com/s/token

RewriteCond %{HTTP_USER_AGENT} (LinkedInBot/[0-9]|facebookexternalhit/[0-9]|Facebot|Twitterbot|twitterbot|Pinterest|pinterest|Google.*snippet|baiduspider|rogerbot|embedly|quora\ link\ preview|showyoubot|outbrain|slackbot|vkShare|W3C_Validator)
RewriteCond %{HTTP_HOST} ^(.+?)\.realdomain\.com$
RewriteRule ^s/(.*)$ http://%1.realdomain.com/static.php?token=$1 [NC,L]

将最终成为http://{client}.realdomain.com/static.php?token=token

如上所述,这里的任何事情都是完美的,但现在我正在进入不同的领域,所以它可以

{client}.real-domain.com{client}.sunset.com

我在.htaccess中基本上是一样的东西,但是当它重定向时它应该采用整个域,所以它将转到例如http://{client}.sunset.com?static.php=token=my-secret-token如果爬行者来到{client}.sunset.com/s/my-secret-token

我怎么会这样做?我似乎是一个简单的解决方案,但出于某种原因,我似乎无法理解它。

谢谢

答案
RewriteCond %{HTTP_USER_AGENT} (LinkedInBot/[0-9]|facebookexternalhit/[0-9]|Facebot|Twitterbot|twitterbot|Pinterest|pinterest|Google.*snippet|baiduspider|rogerbot|embedly|quora\ link\ preview|showyoubot|outbrain|slackbot|vkShare|W3C_Validator)
RewriteCond %{HTTP_HOST} ^(.+?)\.%{HTTP_HOST}%\.com$
RewriteRule ^s/(.*)$ http://%1.%{HTTP_HOST}%.com/static.php?token=$1 [NC,L]

你能测出来吗?用%{HTTP_HOST}%替换你的域名

以上是关于.htaccess:用params将rewriteCond改为同一URL内的另一个页面的主要内容,如果未能解决你的问题,请参考以下文章

利用htaccess实现隐藏真实地址

apache配置rewrite及.htaccess文件(转载)

htaccess - mod_rewrite 将虚拟目录或文件作为参数传回 index.php?

子域 mod_rewrite (htaccess) 到相对目录

.htaccess从参数中修剪#(哈希)符号

htaccess 和 mod_rewrite 用于 IPN 重定向