2015-07-10 84 views
1

我使用的是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,則不會。

我該怎麼做?

+0

您試圖從查詢參數訪問一個字符串,這是行不通的。查詢部分僅僅是'RequestURI'的一部分!這在文檔中有明確的說明:http://httpd.apache.org/docs/current/mod/mod_setenvif.html#setenvif文檔實際上指出了具體的問題,你可以在這裏找到你的問題的答案:-) – arkascha

+2

I我會閱讀那些文檔,但它與我的測試相沖突。無論如何,它並沒有給我答案。顯然我應該使用RewriteCond,但我不知道如何。 –

+0

請參閱: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

回答

1

要匹配查詢字符串,您將需要mod_rewrite規則而不是mod_setenv

將此代碼放在根目錄的.htaccess:

RewriteEngine On 

RewriteCond %{QUERY_STRING} bar [NC] 
RewriteRule^- [E=TestEnv:Worked] 
+0

如果你解釋發生了什麼,它會很好。 [NC]表示不區分大小寫, ^ - 表示不改變url,只是設置和環境變量, –

+0

'NC'用於忽略大小寫匹配。在上面的例子中,它將匹配bar,bar,BAR,baR等。 – anubhava

相關問題