我已经在这个工作了几个小时了。我正在尝试将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
的页面时,它返回HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfill the request
此时我不知道该怎么做,我是否需要做某事使用Windows Azure?我来自Apache背景,Windows IIS对我来说是新的。任何信息对我都有帮助,谢谢。
答案 0 :(得分:1)
根据您提供的信息我来自Apache背景,Windows IIS对我来说是新的,我确信您的问题与IIS配置相关,以支持URL重写。 (如果您已经安装了URLRewrite并在Azure VM中配置,请告诉我,我将删除此答案)
默认情况下,在Windows Azure中,IIS没有安装URLRewrite模块,因此无法执行任何配置的URL重写设置,并且将返回500错误。
您是否启用了对Azure VM的RDP访问权限,以便您可以远程访问并查找应用程序事件日志中记录的可能异常?如果您对Azure VM进行RDP并查找应用程序事件日志,则会看到一条错误,说明URL重写模块不可用。
首先,您需要创建一个启动任务以在Azure中安装URLRewrite模块。要了解有关Windows Azure启动任务的更多信息,请访问此link。
这是关于如何在Windows Azure中启用URL重写的link。 (如果这是您的错误,我可以编写有关如何在Windows Azure上运行URLRewrite的详细信息)
答案 1 :(得分:0)
我只是将ubuntu上的Apache移动到Azure网站上的IIS。根据以下网址,重写模块似乎已经启用。我也使用Web Platform Installer在我的Windows 7上设置类似的环境(IIS express 7.5),web.config也能很好地工作。
“... URL Rewrite模块始终在云中启用并可用。但是,您需要安装它才能在本地开发环境中使用它......”
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是否正确!
希望它有所帮助!