基于查询字符串的 Apache 重写

基于查询字符串的 Apache 重写

我尝试检测查询字符串中是否存在特定名称/值对,如果存在,则执行某项操作。我尝试在存储在中的 conf 文件中执行此操作,conf-available/并在a2enconf运行后启用它。代码很小:

RewriteCond %{QUERY_STRING} foo=bar [NC]
RewriteRule ^(.*)$ http://linkedin.com [R=301,L]

不,重定向到 linkedin(或任何其他地方)不是我的最终目标,但我想让它做一些非常明显的事情,只是为了知道它正在工作(显然它没有)。为了验证此 conf 是否已加载并且其代码正在执行,我在上面添加了以下代码片段:

RedirectMatch 301 ^(.*)$ http://www.cnn.com$1

工作RedirectMatch如预期。RewriteRule不工作。

Apache 在 docker 容器内运行,我的本地 :8080 被转发到容器上的 :80。我正尝试访问 上的站点http://localhost:8080?foo=bar。如果我将完全相同的代码移动到文件中.htaccess,它就会按预期工作。

我是不是太过于关注细节而忽略了一些显而易见的东西?

更新 完整的配置文件如下:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Verifies that this conf is loading properly
    # RedirectMatch 301 ^(.*)$ http://www.cnn.com$1

    RewriteCond %{QUERY_STRING} foo=bar [NC]
    RewriteRule ^(.*)$ http://linkedin.com [R=302,L]
</IfModule>

相关内容