如何根据查询字符串中的匹配使用 SetEnvIf?

Dun*_*all 5 php .htaccess mod-rewrite apache2

我使用的网址是,比方说, example.com/subdir/index.php?foo=bar

index.php 包含这个: <?php echo getenv("testenvvar"); ?>

我在 .htaccess 中设置环境变量,如下所示:

SetEnvIf Request_URI (index) TestEnv=Worked

这将打印“工作”。

如果我将其更改为SetEnvIf Request_URI (bar) TestEnv=Worked,则不会。

我怎样才能做到这一点?

Kev*_*oid 6

另一种选择是SetEnvIfExpr

SetEnvIfExpr "%{QUERY_STRING} =~ /bar/" TestEnv=Worked
Run Code Online (Sandbox Code Playgroud)


anu*_*ava 4

要匹配查询字符串,您将需要mod_rewrite规则而不是mod_setenv.

将此代码放入 root .htaccess 中:

RewriteEngine On

RewriteCond %{QUERY_STRING} bar [NC]
RewriteRule ^ - [E=TestEnv:Worked]
Run Code Online (Sandbox Code Playgroud)