随着越来越多的云主机或VP普及Windows 2008或Windows 2008 R2,iis 7.0或IIS 7.5的时代已经到来。以Windows 2008 R2为例,介绍了如何将windows 2003下IIS 6.0的重写组件完美地迁移到Windows 2008 R2。
Windows 2008 R2默认只有64位,但是内置了支持32位的功能,也就是说几乎所有在32位下可以正常运行的软件都可以在Windows 2008 R2中正常运行,不用担心php 5.2.17是否支持。另外需要注意的是,在Windows 2008 R2下,IIS版本是7.5,添加的是服务器管理面板中的“角色”,而不是“功能”。哦,这个点你第一次接触2008 R2是找不到的.
IIS7.0从一开始就是模块化的。你可以安装你需要的任何东西,当然包括ASP支持。当我们用它运行PHP的时候,也可以挂接CGI。安装PHP的时候不需要安装FastCGI,因为它已经内置了,和Windows 2003不一样。
让我们开门见山吧。我们在Windows 2003下使用重写组件时,通常会有相应的httpd.ini规则包。在Apache下,我们应该有。htaccess规则包。网上有很多方法可以让我们使用IIS 7.5的ULR重写模块来导入原来的规则。导入的规则会在网站的根目录下生成一个web.config文件,该文件存储了根据导入生成的新规则。由于各种原因,导入的规则语法可能无法被IIS 7.5的这个重写模块100%识别,导致导入的规则运行时出现各种提示,包括无效、HTTP 500内部错误等等。
有什么办法可以直接使用Windows 2003原来的伪静态规则包?答案是肯定的。Windows 2008 R2具有更高的兼容性。没有Windows 2003莫名其妙的上下箭头,权限一次性配置到位。
在Windows 2008 R2中IIS 7.5的站点面板中,有一个“IsapI Filter”模块,这是Windows 2003中加载重写组件的地方。接下来,你应该知道如何加载它。同样,在这里,Rewrite.dll被用作一个运行文件,并加载到ISAPI过滤器。以KingCMS本地门户v2.2为例。ISAPI筛选器Rewrite.dll将自动读取它旁边的httpd.ini规则包。
一般来说,这是没练完的教程的结尾,但是实际操作中,重写组件是这样加载的,还是不能生效。其实原因也很清楚,因为Windows 2008 R2是64位的,而我们在Windows 2003中直接使用的重写组件是32位的。因此,我们需要弄清楚IIS 7.5中加载的重写组件是如何设置为32位兼容模式的,并在疯狂搜索后最终在应用程序池中找到该设置:
请将“启用32位应用程序”设置为True,然后重试。伪静态是否已经生效。