我正在寻找一种方法来模仿我在广告服务器上看到的行为,以进行内部测试和跟踪。我希望能够在我的网址中检查并替换某些占位符,例如 {timestamp} 。
说我有这样的网址:http://suchandsuchasite.com/frogs.php?x=43&thetime={timestamp}&bird=albatross。我目前的理论是,我应该能够在.htaccess文件中添加RewriteRule,将字符串{timestamp}替换为实际的当前时间戳。但我是mod_rewrite的新手,并不是所有熟悉正则表达式的人,所以我在开展这项工作方面进展非常缓慢。我到目前为止所有的一切是:
RewriteCond %{QUERY_STRING} &?thetime={timestamp}$
......我甚至不确定这是否正确。我一直在查看Apache文档,所以我知道下一行应该遵循以下语法:
# RewriteRule *Pattern* *Substitution* [flags]
...但我不确定如何只替换那个变量并保留查询字符串的其余部分。此外,甚至可以从.htaccess文件中以某种方式获取当前时间戳吗?我应该通过PHP标头来做这件事吗?或者其他完全不同的东西?
非常感谢您愿意提供的任何帮助!
答案 0 :(得分:1)
暂时忽略为什么要执行此操作,您可以通过mod_rewrite
程序地图执行此操作 - 即,重写地图通过运行一些代码生成替换字符串。这样的事情可能有用:
RewriteMap timemap program:/path/to/file/timestamper.py
RewriteRule {timestamp} ${timemap:NULL}
在/path/to/timestamper.py
:
#!/usr/bin/python
import sys
import time
while True:
request = sys.stdin.readline().strip()
response = int(time.time())
sys.stdout.write(response + '\n')
sys.stdout.flush()
Apache在Web服务器启动时启动timestamper.py
,并且
然后喂它重写。在这种情况下,Apache总是发送它
NULL
,脚本忽略输入值并输出Unix
时间戳。
请注意,mod_rewrite
处理请求(它没有
过滤您的网页/网络应用/等生成的网址。正如CBroe所说,
目前还不清楚在这一点上重写URL是你想要的
要做。