Apache-2.2
Htaccess 身份驗證,基於伺服器,而不是客戶端資訊
在目前的項目中,我們有單獨的開發和生產。兩者的程式碼都在單個 SVN 儲存庫中。
問題在於從外部訪問開發環境。假設我們有兩個獨立的伺服器用於生產和開發:
1.2.3.4 -> production 5.6.7.8 -> development
這個想法是在兩台伺服器上使用相同的 .htaccess 和 Auth,但行為必須是:
- 在開發伺服器上,使用者必須在訪問站點之前驗證自己
- 在生產伺服器上,使用者具有完全訪問權限,無需 Auth。
它應該是這樣的(虛擬碼):
IF $SERVER_IP == 5.6.7.8 THEN require_auth ELSE do_not_require_auth
我們試圖用盡可能少的附加模組來實現這一點,但遺憾的是,根據伺服器資訊,我們找不到任何關於如何在 .htaccess 中執行條件的資訊。
甚至可能嗎?
您應該將這些添加到您的 .htaccess 身份驗證/授權指令中。
setenvif Server_Addr=1.2.3.4 okpublic allow from env=okpublic require valid-user satisfy any
如果伺服器地址是 1.2.3.4,那麼我們設置一個環境變數,我們將在第二行使用它來允許任何人訪問。如果伺服器地址不是 1.2.3.4,則使用者必須進行身份驗證。如果滿足這兩個規則中的任何一個,則授予訪問權限。
我所做的很奇怪,但是哦,好吧,如果這是你想要的:)
另一種更簡單的解決方案是在生產伺服器上使用 svn propedit svn:ignore 進行 svn 更新時忽略 .htaccess 文件。如果您需要在 prod 和 dev 上有不同的 .htaccess 文件,那麼也許您想研究分支、合併等,或者多用途 .htaccess 文件可能更好。我也想提一下 svn 控制項。