Windows HOSTS 文件和特定的伺服器文件夾
我一直在玩 Windows HOSTS 文件,它似乎位於 c:\windows\ (Windows 95、98 y Me)下,以及 C\Windows\system32\drivers\etc\ 下(Windows NT、2000、XP和遠景)
我想指出
http://mydomain/到我的 Web 伺服器的特定文件夾。我的主機文件目前看起來像:
127.0.0.1 domainA 127.0.0.1 domainB
但我想要的是
http://domainA/ points to http://127.0.0.1/domainA/ http://domainB/ points to http://127.0.0.1/domainB/
我怎樣才能做到這一點?
測試
要使用 rewriteModule 取消註釋 httpd.conf 文件中的下一行:
LoadModule rewrite_module modules/mod_rewrite.so
下一個程式碼不是我想要的。
RewriteEngine on RewriteCond %{HTTP_HOST} ^domainA [NC] RewriteRule ^/(.*) http://127.0.0.1/domainA/$1 [L,R]
使用上面的程式碼,當您在瀏覽器中輸入http://domainA/>時,它會自動將其更改為<http://127.0.0.1/domainA/>但我希望它在提供內容時保留在[http://domainA/中](http://domainA/)<http://127.0.0.1/domainA/文件夾。
例如。http://127.0.0.1/指向 /htdocs
我希望http://domainA/指向 /htdocs/domainA
解決方案
將下一行添加到 apache httpd.conf:
<VirtualHost *:80> ServerName http://domainA/ DocumentRoot "/htdocs/domainA" </VirtualHost> <VirtualHost *:80> ServerName http://domainB/ DocumentRoot "/htdocs/domainB" </VirtualHost>
第二個答案:
您必須使用 apache 虛擬主機功能:
<VirtualHost *:80> # url like http://127.0.0.1/..... ServerName 127.0.0.1 DocumentRoot /htdocs </VirtualHost> <VirtualHost *:80> # url like http://domaina/..... ServerName domaina DocumentRoot /htdocs/domaina </VirtualHost>
HOSTS 文件的唯一目的是將名稱映射到 IP 地址;它與 URLS 沒有任何關係(DNS 也是如此)。你不能這樣做。
除了按照建議重寫 URL 之外,您還可以使用主機標頭:
- 在HOSTS文件中定義這兩個名字,使它們都指向127.0.0.1
- 在您的網路伺服器中定義兩個網站,一個響應“domainA”,另一個響應“domainB”
這樣,當您呼叫http://domainA>時,您將看到第一個網站;當你呼叫<http://domainB時,第二個會出現;Web 伺服器將自動辨識它被呼叫的名稱並為相應的網站提供服務,即使兩者都在相同的 IP 地址上執行。
如果要使用 IIS,則需要執行 Windows 的伺服器版本才能創建多個網站;XP 和 Vista 等客戶端系統上的 IIS 僅支持單個站點。