我有一個網站提供基於子域的特定內容。所以它是同一組文件,並且網站頁面中的標題和一些信息可能基於子域進行更改。我可以在htaccess中執行if/then/else嗎?
我需要基於子域的不同htpassword身份驗證,但無法找到有關如何在htaccess中執行if/then類型的事情的信息。
基本上我需要的是這樣的:
如果子域= 'ABC' 使用該htpassword文件
如果子域= '高清' 使用該htpassword文件
可以這樣做?
我有一個網站提供基於子域的特定內容。所以它是同一組文件,並且網站頁面中的標題和一些信息可能基於子域進行更改。我可以在htaccess中執行if/then/else嗎?
我需要基於子域的不同htpassword身份驗證,但無法找到有關如何在htaccess中執行if/then類型的事情的信息。
基本上我需要的是這樣的:
如果子域= 'ABC' 使用該htpassword文件
如果子域= '高清' 使用該htpassword文件
可以這樣做?
嘗試這樣的:
SetEnvIf Host ^abc\. HOST_ABC
SetEnvIf Host ^dev\. HOST_DEF
<IfDefine HOST_ABC>
AuthUserFile …
</IfDefine>
<IfDefine HOST_DEF>
AuthUserFile …
</IfDefine>
你使用哪個webserver?
一種可以在多個不同服務器上工作的技術(當然可以在Apache中工作)是在與每個子域對應的目錄中有一個不同的.htaccess文件。
根據發佈的問題,它是相同的文件集,所以沒有單獨的直接保守黨。 – Amber 2009-08-05 18:31:16
它是使用IIS和IISpassword和ISAPIrewrite3的Win 2003服務器。 您的解決方案將不起作用,因爲子域的文件系統中沒有物理上不同的文件集 - 所有子域都指向相同的一組文件,PHP會評估子域並顯示基於該域的不同數據。謝謝.. – user151257 2009-08-05 18:32:19
如果是我(和我都沒有想到之前做到這一點)我想:這取決於
這樣:
/sites/subdomain_a/.htaccess
/sites/subdomain_a/pub
/sites/subdomain_b/.htaccess
/sites/subdomain_b/pub
其中
/sites/subdomain_a/pub == /sites/subdomain_b/pub
使用
ln -s
或相似。然後使用mod_rewrite將(內部)重定向到正確的站點根目錄。我認爲 mod_rewrite在加載.htaccess之前運行。
這意味着您可以根據子域有效地爲具有不同.htaccess的相同站點文件提供服務。
希望這有助於一點點的破解。
希望看到更好的東西存在。
您不能使用if/else,因爲htaccess不是指令列表。但是,如果使用條件塊,如< IfModule mod_rewrite.c >或< IfDefine ,則可以根據請求的子域使用不同的指令。我不確定你會用哪一個...
你也可以放一個。htaccess文件高於文件的一個級別並使用<目錄>爲每個子域指定不同的規則,但使子域目錄全部爲符號鏈接到共享文件的同一目錄。
所以這將是上面的Web根目錄(S)的目錄:
的.htaccess
sitefiles
subdomain1(符號鏈接指向sitefiles)
subdomain2(符號鏈接指向sitefiles)
...
這看起來很棒 - 由於時間限制,我最終不得不在PHP中構建一個簡單的身份驗證,但我想在測試環境中嘗試一下,因爲它似乎有意義。謝謝! – user151257 2009-08-07 15:26:07
雖然看起來很有魅力,但對我來說卻不起作用。你會修改這個Gumbo嗎? – Devrim 2009-12-15 19:02:45