2011-04-26 122 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

相关问题