【问题标题】:Apache Location Reverseproxy URL not workingApache 位置反向代理 URL 不起作用
【发布时间】:2018-11-12 17:06:35
【问题描述】:

我正在尝试匹配具有多个参数的 URL 并使用反向代理加载其他一些内容,由于某种原因 Location Tag 无法正常工作。

以下是我的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。我究竟做错了什么?正则表达式或其他配置问题是否存在问题?

【问题讨论】:

    标签: regex apache reverse-proxy mod-proxy


    【解决方案1】:

    如果您想在位置指令中使用正则表达式,您应该添加波浪号 (~),但即使这样,位置也不匹配查询字符串。添加 /tracker/csc-event 作为 Location 并检查该指令内的查询字符串。

    另外,proxypass 前置查询字符串,无需添加。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 2014-11-25
      • 2015-12-16
      • 2017-10-15
      • 2011-07-13
      • 1970-01-01
      相关资源
      最近更新 更多