Define FOO "/bar/foo/bar_v1.0.0"
<If "${FOO} == '/bar/foo/bar_v1.0.0'">
Define BAR2 "foofoo1"
</If>
<ElseIf "${FOO} == '/bar/foo/bar_v2.0.0'">
Define BAR2 "foofoo2"
</ElseIf>
<Else>
Define BAR2 "foofoo3"
</Else>
我做錯了什么?我已經閱讀了Apache 檔案和這個檔案,但我看不到問題所在。
? 我試過'${FOO}', ${FOO}, '%{FOO}', %{FOO}。
? 我嘗試從字串中洗掉引號:<If "${FOO} == /bar/foo/bar_v1.0.0">
? 我嘗試完全洗掉雙引號:<If ${FOO} == '/bar/foo/bar_v1.0.0'>
? 我也嘗試<If "${FOO} =~ /bar_v1\.0\.0/">過
?<If "${FOO} -strmatch '/bar/foo/bar.v1.0.0'">
? 我還嘗試從使用Define 指令設定的值中洗掉引號:
Define FOO /bar/foo/bar_v1.0.0
? 我嘗試洗掉ElseIf塊,并使用just IfandElse
而且我總是將 BAR2 定義為“foofoo3”,因為它只是我在“else”中輸入的一個例外(默認)值,以防萬一。所以前兩個塊無論如何都不會起作用。
我不明白,我什至可以在 Apache 運算式中使用自定義變數嗎?該代碼位于 Apache 組態檔中。
我收到 Apache 錯誤,但它沒有啟動。該錯誤是因為我BAR2用作加載模塊的路徑的一部分。當然 Apache 說它無法加載模塊,因為實際上我沒有這樣的路徑"/usr/foofoo3/some_module"但我當然有"/usr/foofoo1/some_module"and "/usr/foofoo2/some_module",但正如我所說的前 2 個塊永遠不會作業
uj5u.com熱心網友回復:
昨天我也嘗試用 Numbers 代替 String 做同樣的測驗,得到了同樣的結果。所以,我很困惑,很失望,實際上已經完成了。我剛剛想出了另一種方法,在我看來它并不那么漂亮,但我會用我所擁有的東西作業。如果有人對這里的代碼感興趣,它正是我所需要 的:(根本沒有“foofoo3”,因為我說這是一個例外,它是為了測驗,我用 BAR2 值作為“foofoo3”測驗了這段代碼太,在默認部分)
Define BAR__v1_0_0 "OK"
# CONDITIONAL
<IfDefine BAR__v1_0_0 >
Define FOO "/bar/foo/bar_v1.0.0"
Define BAR2 "foofoo1"
</IfDefine>
<IfDefine BAR__v2_0_0 >
Define FOO "/bar/foo/bar_v2.0.0"
Define BAR2 "foofoo2"
</IfDefine>
# DEFAULT
<IfDefine !FOO>
Define FOO "/bar/foo/bar_v1.0.0"
Define BAR2 "foofoo1"
</IfDefine>
盡管如此,我還是對這件事很好奇,尤其是@airtower-luna 在 github 上說的。于是我又做了一個超級簡單的測驗:
<If "'word' == 'word'">
Define BAR2 "foofoo1"
</If>
<ElseIf "'noword' == 'word'">
Define BAR2 "foofoo2"
</ElseIf>
<Else>
Define BAR2 "foofoo3"
</Else>
我也這樣做了<If "word == word">
結果是什么?一樣??!!!我認為這很荒謬!我知道該config檔案不是腳本,但是 Apache 家伙IfDefine在啟動時就開始作業了,但對于任何編碼人員來說都不是一個簡單的知名人士If Else......我不知道該說什么,只是 - 好吧,那么(我不是故意/有意不尊重某人)。所以,也許有一天我會嘗試@mike-kaminski 解決方案,但不是今天。在所有嘗試之后,我真的懷疑它在啟動時是否有效,正如[said here]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/480700.html
