在开发PHP应用程序时,通常在应用程序结构中的某个位置具有Web服务器所针对的公共文件夹。私有应用程序代码存储在此目录之外,因此无法公开访问。
我有一个PHP应用程序我正在尝试在Azure上运行并希望将我的WebRole中的目录配置为“公共目录”,但是在Eclipse中(我使用的是PHP Azure插件)我不知道看到任何配置它的选项。有没有办法配置角色的实际“根”目录?或者该角色本身就是公开的,因此我应该将我的私人代码存储在其他地方并与WebRole共享?
答案 0 :(得分:2)
默认情况下,Windows Azure中的IIS配置上的网站根目录始终是公共的。但是,由于支持URL重写,因此很容易克服这一点。
与Apache上的.htaccess和mod_rewrite一样,您可以将当前请求重写到其他文件夹。 IIS将在内部使用此信息来查找您的文件,但用户的浏览器将永远不会注意到这种重写。
以下是您可以在Web.config文件中复制/粘贴的XML的一部分。以下代码中的公共根是“公共”,如果这是“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欺骗到不同的公共根目录。如果您将我的博客文章用于Azure的打包部分,并使用Google / Bing / MSDN作为IIS配置部分,那么这也应该有效。
享受!