我使用的是URL,讓我們說,example.com/subdir/index.php?foo=bar
如何根據查詢字符串中的匹配使用SetEnvIf?
index.php文件包含此:3210
我設置的環境變量在.htaccess像這樣:
SetEnvIf Request_URI (index) TestEnv=Worked
這打印「工作」。如果我將其更改爲SetEnvIf Request_URI (bar) TestEnv=Worked
,則不會。
我該怎麼做?
我使用的是URL,讓我們說,example.com/subdir/index.php?foo=bar
如何根據查詢字符串中的匹配使用SetEnvIf?
index.php文件包含此:3210
我設置的環境變量在.htaccess像這樣:
SetEnvIf Request_URI (index) TestEnv=Worked
這打印「工作」。如果我將其更改爲SetEnvIf Request_URI (bar) TestEnv=Worked
,則不會。
我該怎麼做?
要匹配查詢字符串,您將需要mod_rewrite
規則而不是mod_setenv
。
將此代碼放在根目錄的.htaccess:
RewriteEngine On
RewriteCond %{QUERY_STRING} bar [NC]
RewriteRule^- [E=TestEnv:Worked]
如果你解釋發生了什麼,它會很好。 [NC]表示不區分大小寫, ^ - 表示不改變url,只是設置和環境變量, –
'NC'用於忽略大小寫匹配。在上面的例子中,它將匹配bar,bar,BAR,baR等。 – anubhava
您試圖從查詢參數訪問一個字符串,這是行不通的。查詢部分僅僅是'RequestURI'的一部分!這在文檔中有明確的說明:http://httpd.apache.org/docs/current/mod/mod_setenvif.html#setenvif文檔實際上指出了具體的問題,你可以在這裏找到你的問題的答案:-) – arkascha
I我會閱讀那些文檔,但它與我的測試相沖突。無論如何,它並沒有給我答案。顯然我應該使用RewriteCond,但我不知道如何。 –
請參閱:http://stackoverflow.com/questions/19362746/rewritecond-with-setenv它指的是:https://turboflash.wordpress.com/2010/05/27/apache-environment-variables-visibility- with-setenv-setenvif-and-rewriterule-directives/ – arkascha