2017-05-30 87 views
0

使用IIS 7如何配置網站在特定網址可用?如何讓IIS在指定的網址上提供網站?

如果我創建一個包含index.html文件的目錄,並使用該目錄創建一個網站,該網站的網址是'http://localhost',我該如何獲取它在'http://localhost/Application1'而不是?

我花了一個小時在網上尋找解決方案,看起來似乎是最明顯的可以想象的配置。我見過兩種可能的方法。

  1. 創建與配置,以解決無濟於事一個物理目錄,然後創建applciation作爲該目錄的孩子所需的URL的虛擬目錄。試過了,IIS只是抱怨說找不到位置。

  2. 安裝某種網址重寫模塊,然後決定是否要花費下一個小時左右的時間或者如何設置它,或者直接殺死自己。

肯定有一個更直接的解決方案??

UPDATE

我注意到別的東西沒有任何意義。如果我創建了一個新的網站inetpub/wwwroot2,那麼創建兩個應用程序App1和App2(每個目錄包含一個簡單的靜態index.html)。在IIS管理器中,如果我嘗試使用App1或App2創建虛擬目錄並單擊「測試設置」,則會出現授權錯誤,其中指出:

「服務器配置爲使用傳遞身份驗證和內置帳戶以訪問指定的物理路徑但IIS管理器無法驗證內置帳戶是否具有訪問權限確保應用程序池標識具有對物理路徑的讀取權限如果此服務器已加入到域中,並且應用程序池身份是NetworkService或LocalSystem,請驗證\ $是否具有對物理路徑的讀取權限,然後再次測試這些設置。「

經過在網上搜索的更多信息後,我發現了一個解決方案,我將作爲可能的答案發布。

回答

0

我發現了一個解決方案,不能夠訪問內容目錄的默認的IIS配置的身份驗證問題在這裏創建https://forums.iis.net/search?q=authors%3A%28Beaker007%29&s=postDate&d=desc

  1. 開始>管理工具> Internet信息服務(IIS)管理器
  2. 服務器名稱>網站,然後右鍵單擊「默認網站」>「添加虛擬目錄」並填寫名稱和目錄路徑 待共享
  3. 虛擬目錄出現後默認的Web站點三下分辯一下就可以了>編輯權限>安全>編輯
  4. 地址:本地IUSR,匿名登錄和網絡服務,他們至少需要「讀取」和「列出文件夾內容」 - 瑞
  5. 開關在中央窗格中雙擊「目錄瀏覽」並在右側的 右側的操作窗格下單擊「啓用」(確保新創建的虛擬目錄高亮)
  6. 在功能視圖中,雙擊認證>在身份驗證頁面上,選擇匿名身份驗證。
  7. 在「操作」窗格中,單擊「編輯」以設置匿名用戶將連接到該網站的安全主體。
  8. 在編輯匿名身份驗證憑據對話框中,選擇以下選項之一: - 特定用戶(IUSR) - 應用程序池標識,如果希望使用當前指定的帳戶運行IIS進程在 的應用程序池的屬性頁上。默認情況下,這是網絡服務帳戶。 重要如果您使用網絡服務帳戶,則授予匿名 用戶與該帳戶關聯的所有內部網絡訪問權限。

使用此過程以虛擬directries添加到我的IIS網站樹之後,我能夠在虛擬目錄轉換爲應用程序沒有問題。

1

即使您知道底層協議和系統的工作方式,IIS通常會令人困惑和沮喪。首先,你不能在一個特定的路徑上在互聯網上有一個網站。主機名稱(和/或IP地址和端口)確定控制該站點的服務器。路徑只是一個站點內的便捷組織工具。鑑於此限制,IIS自然要求您創建一些在主機名(同樣和/或IP地址和端口)級別偵聽的內容。 IIS將此稱爲「網站」。創建完站點後,您可以在該站點中創建應用程序或虛擬目錄。應用程序和虛擬目錄之間唯一的區別是應用程序可以在其自己的應用程序池中運行自己的代碼。任何一個總是處理其父項的子路徑(這是站點或另一個虛擬目錄或應用程序)。這是因爲IIS處理請求的方式。通過使用IP地址,端口和主機名找到適當的請求應用程序後,它將請求發送給應用程序。應用程序然後查看請求中給出的路徑的第一部分,並使用它查找相應的應用程序或虛擬目錄,然後對路徑的下一部分執行相同的操作,直到它無法將下一個子路徑部分與配置應用程序或虛擬目錄。如果找到的最後一個項目是虛擬目錄,它只是在配置的物理路徑上提供靜態文件。如果它是一個應用程序,它將控制權交給應用程序的代碼(如果有的話)。如果應用程序沒有代碼,它將應用程序視爲僅僅是一個虛擬目錄。

當您設置自己的網站時,您可以使用預配置的「默認網站」,該網站監聽所有IP地址上的端口80或您自己創建的網站。但是請記住,如果您嘗試創建兩個監聽相同URL的項目,IIS可能會很容易混淆,因此如果您創建自己的站點來嘗試偵聽相同的URL作爲默認Web站點,它將不會工作。您可能需要先禁用(或刪除)默認網站,方法是右鍵單擊網站並選擇管理網站/停止。

應用程序池可以被認爲是碰撞保護邊界。一個池中的應用程序可以防止其他池中的崩潰。默認情況下,爲每個新站點創建應用程序池,並將其命名爲與站點相同(因此每個站點都受到其他站點的保護)。您可以在網站創建期間或之後覆蓋默認的應用程序池映射。

在排除故障或首次設置系統時,首先要讓網站正常運行(並確保您擊中了您認爲正在擊中的網站)通常是個好主意,然後逐個添加應用程序並讓每個人工作(不要搞亂網站)。如果您有任何級別的代碼,請首先在沒有代碼的情況下進行測試,然後使用代碼對其進行測試。如果靜態文件成功但代碼不成功,則可能是應用程序池設置問題。首先從本地機器測試它,然後從另一臺機器(如果需要)測試它。如果它在本地工作,而不是從另一臺機器工作,那麼可能是防火牆或網絡問題。

參見:https://webmasters.stackexchange.com/questions/72488/does-iis-7-5-use-a-separate-appdomain-for-each-subdomain/72650#72650

+0

通讀你寫的東西似乎如果我在'WebSite1/Application1'有一個IIS應用程序,我需要在'WebSite1'存在的所有'./Application1'URL到Application1。有沒有什麼可以直接做到的?如果不是,IIS應該如何爲多個網站提供服務,還是僅僅服務於一個網站? – Neutrino

+0

根據這個https://stackoverflow.com/a/6297660/954927我應該能夠在inetpub/wwwroot下添加多個網站,並以localhost/website1 localhost/website2等方式訪問它們。但是當我以這種方式設置IIS時在wwwroot/website1和wwwroot/website2上有一個簡單的靜態文件,然後導航到localhost/website1。我收到一個錯誤消息,表明請求被路由到inetpub \ wwwroot \ index.html找不到。 – Neutrino

+0

在給定的服務器上,您可以根據需要設置多個站點。在給定的站點中,您可以根據自己的喜好設置多個應用程序,並且在給定的應用程序上,可以根據需要設置多個虛擬目錄。 – James

1

有一個優雅的解決方案,以使用默認的頁面這個問題。

首先創建一個類似這樣的內容 「的Default.aspx」 文件:

<%@ Page Language="C#" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <% 
      //redirect to specific web application. You can also parse request and redirect to specific application... 
      Response.Redirect(@"http://www.example.net/Application1");   
     %> 
    </div> 
    </form> 
</body> 
</html> 

複製在IIS根文件(俗稱 「C:\的Inetpub \ wwwroot文件」)和默認Web站點添加默認文檔「Default.aspx」如果已經不存在。

那麼這是如何工作? 當請求到達IIS根目錄時,IIS將查找默認文檔。在這種情況下將是「Default.aspx」。這個頁面會將客戶端重定向到您的目標應用程序。

當然,您可以在IIS根目錄上對純HTML文檔使用相同的原則。