2011-04-26 115 views
2

嘿,我有一個PHP的Windows Azure項目,但我是新來的IIS。我有我的PHP庫在根文件夾和客戶端文件,如index.php,樣式表或JavaScript文件夾中稱爲document_root。子文件夾中的IIS文檔根

如何設置IIS 7(可能使用Web.config)以將document_root用作站點的默認文件夾(使根不可見),以便我可以調用mydomain.tld /而不是mydomain.tld/document_root/

我用:

<defaultDocument> 
    <files> 
    <clear /> 
    <add value="document_root/index.php" /> 
    </files> 
</defaultDocument> 

的正常工作,但它只能訪問的index.php和無法找到像/document_root/css/default.css任何文件(相對地址爲CSS /默認。 css)

回答

2

有2種方法可以做到這一點。簡單的方法是使用IIS7中包含的URL重寫模塊。一個例子將請求重定向到公共文件夾(並禁止該文件夾直接訪問):

<system.webServer> 
    <rewrite> 
     <rules> 
      <clear /> 
      <rule name="blockAccessToPublic" patternSyntax="Wildcard" stopProcessing="true"> 
       <match url="*" /> 
       <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
        <add input="{URL}" pattern="/public/*" /> 
       </conditions> 
       <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You do not have permission to view this directory or page using the credentials that you supplied." /> 
      </rule> 
      <rule name="RewriteRequestsToPublic" stopProcessing="true"> 
       <match url="^(.*)$" /> 
       <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
       </conditions> 
       <action type="Rewrite" url="public/{R:0}" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

另一種方式是,一旦你的PHP應用程序部署到更改IIS設置。爲此,您需要重寫Web角色的OnStart方法,但我認爲第一種解決方案將滿足您的需求。

0

我來自另一個角度(知道小平le PHP,但IIS和Azure)。我不知道爲什麼你的項目的結構是這樣的,所以我只是假設它是因爲某種原因。我只想指出,根據我的經驗,有一個子文件夾可以讓你以工作爲根,而不僅僅是根源。

無論如何,我將看到的技術稱爲重寫或路由,它可以讓您從標準方式更改URL解析並傳遞到執行頁面的方式。 Stackoverflow有很多關於它的文章,你可能想要拖網,這裏有一個很好的IIS URL Rewriting vs URL Routing,它給出了關於兩種不同類型的路由和在哪裏使用哪個的答案。

你可以在web.config中做到這一點,它應該讓你實現你想要的。

0

修改BASIC SETTINGS和WEBSITE BINDINGS。如果你只有一個網站,你可能只是想編輯的基本SETTINCGS爲默認網站:

  1. 打開IIS管理器
  2. 單擊默認Web站點
  3. 下操作(右手邊),選擇基本設置
  4. 編輯物理位置。

如果你是一個開發機器上測試幾個網站(使用不同的「DOCUMENT_ROOT」文件夾),在列表中,編輯綁定每個網站上單擊鼠標右鍵,並設置不同的網站在不同的端口號運行。然後,您可以使用(例如)訪問各種網站:http-colon-slash-slash localhost:81

相關問題