Apache位置反向代理URL不起作用

时间:2018-11-12 05:53:45

标签: regex apache reverse-proxy mod-proxy

由于某些原因,Location Tag无法正常工作,我试图将URL与多个参数匹配,并使用反向代理加载其他内容。

以下是我的httpd.conf文件

<Location "/tracker/">
  ProxyPass "http://website.com:8290/track.js"
  ProxyPassReverse "http://website.com:8290/track.js"
  Order allow,deny
  Allow from all
</Location>

<Location "/tracker/csc-event?p=([^\s]+)&s=([^\s]+)&v=([^\s]+)&e=([^\s]+)&c=([^\s]+)&n=([^\s]+)&f=([^\s]+)&l=([^\s]+)&i=([^\s]+)&j=([^\s]+)&k=([^\s]+)&w=([^\s]+)&h=([^\s]+)&t=([^\s]+)&x=([^\s]+)">
  ProxyPass "http://website.com:8290/csc-event?p=([^\s]+)&s=([^\s]+)&v=([^\s]+)&e=([^\s]+)&c=([^\s]+)&n=([^\s]+)&f=([^\s]+)&l=([^\s]+)&i=([^\s]+)&j=([^\s]+)&k=([^\s]+)&w=([^\s]+)&h=([^\s]+)&t=([^\s]+)&x=([^\s]+)"
  ProxyPassReverse "http://website.com:8290/csc-event?p=([^\s]+)&s=([^\s]+)&v=([^\s]+)&e=([^\s]+)&c=([^\s]+)&n=([^\s]+)&f=([^\s]+)&l=([^\s]+)&i=([^\s]+)&j=([^\s]+)&k=([^\s]+)&w=([^\s]+)&h=([^\s]+)&t=([^\s]+)&x=([^\s]+)"
  Order allow,deny
  Allow from all
</Location>

当我按下https://website.com/tracker时,它可以正常工作 但不在其他位置,例如,如果我打:

https://website.com/tracker/csc-event?p=0%3Ajodv6q8w%3AdO9XGf6T4SCq7kz49hEEUwNvmkqR8Wxw&s=0%3Ajodv6q8w%3AHgkFFmKSZqdBB6E2C~F8xBKTHv8CGwbl&v=0%3AJ1gADq10d3pj1JL1lh4Dd7ZlLxQyl2~_&e=0%3AJ1gADq10d3pj1JL1lh4Dd7ZlLxQyl2~_0&c=jodvqubo&n=f&f=f&l=https%3A%2F%2Fwebsite.com%2F&i=11y&j=k8&k=1&w=mj&h=i9&t=pageView&x=-e1v043

它显示page not found error。我究竟做错了什么?正则表达式是否有问题或其他配置问题?

1 个答案:

答案 0 :(得分:0)

如果要在位置指令中使用正则表达式,则应添加波浪号(〜),但即使如此,位置也不匹配查询字符串。将/ tracker / csc-event添加为位置,然后检查该指令中的查询字符串。

此外,proxypass会查询字符串,无需添加查询字符串。