子文件夹中的IIS文档根
嘿,我有一个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种方法可以做到这一点。简单的方法是使用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方法,但我认为第一种解决方案将满足您的需求。
我来自另一个角度(知道小平le PHP,但IIS和Azure)。我不知道为什么你的项目的结构是这样的,所以我只是假设它有是因为某种原因。我只想指出,根据我的经验,有一个子文件夹可以让你以工作为根,而不仅仅是根源。
无论如何,我将看到的技术称为重写或路由,它可以让您从标准方式更改URL解析并传递到执行页面的方式。 *有很多关于它的文章,你可能想要拖网,这里有一个很好的IIS URL Rewriting vs URL Routing,它给出了关于两种不同类型的路由和在哪里使用哪个的答案。
你可以在web.config中做到这一点,它应该让你实现你想要的。
修改BASIC SETTINGS和WEBSITE BINDINGS。如果你只有一个网站,你可能只是想编辑的基本SETTINCGS为默认网站:
- 打开IIS管理器
- 单击默认Web站点
- 下操作(右手边),选择基本设置
- 编辑物理位置。
如果你是一个开发机器上测试几个网站(使用不同的“DOCUMENT_ROOT”文件夹),在列表中,编辑绑定每个网站上单击鼠标右键,并设置不同的网站在不同的端口号运行。然后,您可以使用(例如)访问各种网站:http-colon-slash-slash localhost:81