LocationMatch与Location不匹配(Apache 2.4)

LocationMatch与Location不匹配(Apache 2.4),apache,locationmatch,Apache,Locationmatch,我试图了解LocationMatch的情况。现在我有一个类似于下面的位置 <Location "/context"> RequestHeader set X-Forwarded-Proto https RequestHeader set X-Forwarded-Port 443 ProxyPreserveHost On ProxyPass http://example.com/context retry=0 connectiontimeout=300 t

我试图了解
LocationMatch
的情况。现在我有一个类似于下面的
位置

<Location "/context">
  RequestHeader set X-Forwarded-Proto https
  RequestHeader set X-Forwarded-Port 443
  ProxyPreserveHost On
  ProxyPass        http://example.com/context retry=0 connectiontimeout=300 timeout=300
  ProxyPassReverse http://example.com/context
</Location>
但一旦我引入正则表达式,它就不再正确匹配。例如,我想匹配以
/context
开头的路径

<LocationMatch "^/context">
  RequestHeader set X-Forwarded-Proto https
  RequestHeader set X-Forwarded-Port 443
  ProxyPreserveHost On
  ProxyPass        http://example.com/context retry=0 connectiontimeout=300 timeout=300
  ProxyPassReverse http://example.com/context
</LocationMatch>
我的问题是,
是否应该匹配以
/context
开头的URL?例如,
https://mydomain/context
?如果这是匹配的,你知道还有什么干扰吗?我使用的是2.4.41版,但至少从2.4.6版开始我就看到了这种行为。谢谢

根据
ProxyPass
指令:

当在
节中使用时,第一个参数被省略 本地目录是从
获取的。同样的意志 发生在
节内但是,ProxyPass不会 这样解释regexp,因此有必要使用ProxyPassMatch 而不是在这种情况下。

如果我理解正确,并不是因为您的
正则表达式无效,而是因为您的
没有将其解释为正则表达式。所以使用

此外,这也让我看到了一些支持
彼此不兼容的观点的其他页面:

如和所示,我需要更换
ProxyPass
[与]
ProxyPassMatch
LocationMatch
块内使用时


你解决问题了吗?我在Apache2.4.29中遇到了同样的问题。
<LocationMatch "^/context">
  RequestHeader set X-Forwarded-Proto https
  RequestHeader set X-Forwarded-Port 443
  ProxyPreserveHost On
  ProxyPass        http://example.com/context retry=0 connectiontimeout=300 timeout=300
  ProxyPassReverse http://example.com/context
</LocationMatch>
ProxyRequests off

PassEnv HTTPD_SERVER_NAME HTTPD_SERVER_ADMIN SSL_CERTIFICATE_FILE SSL_CERTIFICATE_KEY_FILE

<VirtualHost *:443>
  SSLEngine on
  SSLCertificateFile ${SSL_CERTIFICATE_FILE}
  SSLCertificateKeyFile ${SSL_CERTIFICATE_KEY_FILE}

  Protocols h2 http/1.1
  ServerName ${HTTPD_SERVER_NAME}
  ServerAdmin ${HTTPD_SERVER_ADMIN}
  DocumentRoot /var/www/html

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  SSLCipherSuite EECDH+AESGCM:EDH+AESGCM
  # Requires Apache 2.4.36 & OpenSSL 1.1.1
  SSLProtocol -all +TLSv1.3 +TLSv1.2
  SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
  # Older versions
  # SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
  SSLHonorCipherOrder On
  Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
  Header always set X-Frame-Options DENY
  Header always set X-Content-Type-Options nosniff
  # Requires Apache >= 2.4
  SSLCompression off
  # Requires Apache >= 2.4.11
  SSLSessionTickets Off
  SSLProxyEngine on
  SSLProxyVerify none
  SSLProxyCheckPeerCN off
  SSLProxyCheckPeerName off
  SSLProxyCheckPeerExpire off

  <LocationMatch "^/context">
    RequestHeader set X-Forwarded-Proto https
    RequestHeader set X-Forwarded-Port 443
    ProxyPreserveHost On
    ProxyPass        http://example.com/context retry=0 connectiontimeout=300 timeout=300
    ProxyPassReverse http://example.com/context
  </LocationMatch>
</VirtualHost>