开发 PHP 应用程序时,通常会在应用程序结构中的某个位置有一个 Web 服务器所针对的公用文件夹。私有(private)应用程序代码存储在该目录之外,因此无法公开访问。
我有一个 PHP 应用程序,我试图在 Azure 上运行,并希望将我的 WebRole 中的一个目录配置为“公共(public)目录”,但在 Eclipse 中(我正在使用 PHP Azure 插件)我不这样做看不到任何配置它的选项。有没有办法配置角色的实际“根”目录?或者该角色本质上是公开的,因此我应该将我的私有(private)代码存储在其他地方并与 WebRole 共享?
最佳答案
默认情况下,网站的根目录在 Windows Azure 中的 IIS 配置中始终是公开的。不过,由于支持 URL 重写,因此很容易克服这个问题。
就像 Apache 上的 .htaccess 和 mod_rewrite 一样,您可以将当前请求重写到不同的文件夹。 IIS 将在内部使用此信息来查找您的文件,但用户的浏览器永远不会注意到此重写的发生。
这是 XML 的一部分,您可以将其复制/粘贴到 Web.config 文件中。下面代码中的公共(public)根是“public”,如果这是“shizzle”,请确保更改它:-)
<!-- Rewrite rules to /public -->
<rewrite>
<rules>
<clear />
<rule name="TransferToPublic" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<action type="Rewrite" url="public/{R:0}" />
</rule>
</rules>
</rewrite>
供引用:这位于 XML 节点下。
另一个选择是“建立你自己的角色”,就像我在这篇文章中所做的部分Lightweight PHP application deployment to Windows Azure 。通过调整一些文件,您可以欺骗 IIS 进入不同的公共(public)根目录。如果您使用我的博客文章作为 Azure 的打包部分,并使用 Google/Bing/MSDN 作为 IIS 配置部分,那么这也应该有效。
享受吧!
关于php - Azure 上使用 PHP 的公共(public)文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5971423/