0

我已经为此工作了几个小时。我正在尝试将 Codeigniter 框架放入 Windows Azure 网站。PHP 工作得很好,但是我似乎无法让这个重写规则正常工作。这是我的web.config文件。

<?xml version="1.0"?>

    <configuration>
      <system.webServer>
        <rewrite>
          <rules>
            <rule name="Rule" stopProcessing="true">
              <match url="^(.*)$" ignoreCase="false" />
              <conditions>
                <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                <add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" />
              </conditions>
              <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>
    </configuration>

当我将文件上传到 Windows Azure 网站并运行页面时,index.php它返回 aHTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request此时我不知道该怎么做,我需要对 Windows Azure 做些什么吗?我来自 Apache 背景,Windows IIS 对我来说是新的。任何信息对我都有帮助,谢谢。

4

2 回答 2

1

根据您提供的信息,因为我来自 Apache 背景,Windows IIS 对我来说是新的,我确信您的问题与支持 URL 重写的 IIS 配置有关。(如果您已经在 Azure VM 中安装并配置了 URLRewrite,请告诉我,我将删除此答案)

默认情况下,在 Windows Azure 中,IIS 没有安装 URLRewrite 模块,因此它无法执行任何配置的 URL ReWrite 设置,并且将返回 500 错误。

您是否启用了对 Azure VM 的 RDP 访问,以便您可以远程访问并查找应用程序事件日志中记录的可能异常?如果您 RDP 到您的 Azure VM 并查找应用程序事件日志,您将看到一个错误,说明 URL 重写模块不可用。

首先,您需要创建一个启动任务以在您的 Azure 中安装 URLRewrite 模块。要了解有关 Windows Azure 启动任务的更多信息,请访问此链接

这是有关如何在 Windows Azure 中启用 URL 重写的链接。(如果这是您的错误,我可以编写有关如何让 URLRewrite 在 Windows Azure 上工作的详细信息)

于 2012-06-10T17:57:07.650 回答
0

我只是将 ubuntu 上的 Apache 移动到 Azure 网站上的 IIS。根据下面的 url,重写模块似乎已经启用。我还使用 Web Platform Installer 在我的 Windows 7 上设置类似的环境(IIS express 7.5),web.config 也可以完美运行。

“...URL 重写模块始终在云中启用并可用。但是,您需要安装它才能在本地开发环境中使用它...”

http://msdn.microsoft.com/en-us/library/windowsazure/dd573358.aspx

您的 web.config 看起来不错,这与我的非常相似 - 删除 url 中的 index.php。

请启用错误消息以从 IIS 输出详细信息,这将帮助您识别问题。我使用这些技巧来找出 IIS 如何查找我的文件。它是 , , 和下面的部分:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <system.webServer>

        <httpErrors errorMode="Detailed" />
        <asp scriptErrorSentToBrowser="true"/>

        <rewrite>
        <rules>
            <rule name="RuleRemoveIndex" stopProcessing="true">
                <match url="^(.*)$" ignoreCase="false" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                </conditions>
                <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true"/>
            </rule>
        </rules>
        </rewrite>

    </system.webServer>

    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true"/>
    </system.web>

</configuration>

另外,请记得检查config.php中的base_url是否正确!

希望它有帮助!

于 2012-10-30T09:30:57.163 回答