Apache-Httpd
基於 IP 地址的條件 DirectoryIndex,使用 .htaccess
我有這個
httpd.conf
:<VirtualHost xx.xxx.xx.xxx> Options All +ExecCGI ServerAdmin hostmaster@thehost.com DocumentRoot /var/www/html/domain.com ServerName dl.domain.org DirectoryIndex dlindex1.html </VirtualHost>
…這很好(我需要作為
DirectoryIndex
我們的 ‘dl.domain.org’ 子域的),但現在我還需要DirectoryIndex
根據 IP 地址更改它,使用.htaccess
. 這可能嗎?StackOverflow 文章告訴我,我不能
DirectoryIndex
有條件地設置.. 而是必須使用RewriteRule
. 如果這是真的,好的,但是什麼RewriteCond
和RewriteRule
?我嘗試了很多東西,包括(實際的 IP 是我們 2 個開發人員的 IP):RewriteCond %{REMOTE_ADDR} ^111\.222\.333\.444$ [OR] RewriteCond %{REMOTE_ADDR} ^555\.666\.777\.888$ RewriteCond %{SERVER_NAME} ^dl.domain.org RewriteRule ^(.*)/$ $1/dlindex2.html
..甚至只是(作為絕對測試):
RewriteCond %{REMOTE_ADDR} ^555\.666\.777\.888$ RewriteRule (.*)/dlindex1.html$ $1/dlindex2.html
但似乎無論我嘗試什麼,它都只是提供
DirectoryIndex dlindex1.html
as perhttpd.conf
,而不是dlindex2.html
當開發人員 IP 呼叫時,我希望作為該子域中的預設頁面提供服務。任何人都可以指出我可以做些什麼來獲得我所追求的嗎?即: …實際上,甚至只是有效地,
DirectoryIndex
根據IP地址進行更改,使用.htaccess
,在飛行中?
假設我們希望 IP 地址 12.34.56.78 進入 /var/www/client1/,我們希望 IP 地址 87.65.43.21 進入 /var/www/client2/
RewriteEngine On RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$ RewriteRule (.*) /client1/$1 RewriteCond %{REMOTE_ADDR} ^87\.65\.43\.21$ RewriteRule (.*) /client2/$1
為您需要為其提供特殊頁面的每個 IP 製作一組“RewriteCond”和“RewriteRule”。
操作分解:
- 客戶端 87.65.43.21 連接
- 規則檢查客戶端是否為 12.34.56.78,它不是
- 然後伺服器進入第二個條件
- 檢查客戶端是否為 87.65.43.21,它是
- 伺服器現在執行作為已通過測試的條件的一部分的 RewriteRule,並提供頁面 /client2/(file_requested)。
OP 已經澄清了他的問題,他不需要單獨的文件夾,但需要提供不同的索引頁面,這是該工作的範例 .htaccess :
RewriteEngine On RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$ RewriteCond %{REQUEST_URI} index\.html$ RewriteRule .* /index-page-client1.html RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$ RewriteCond %{REQUEST_URI} index\.html$ RewriteRule .* /index-page-client2.html
上面的規則將另外檢查請求的文件是否是/曾經是“index.html”,我假設你只想重定向對“index.html”的請求