IIS7运行php,增加rewrite支持

第一步:

下载rewrite_2.0_rtw_x64.msi,在IIS7的服务器上安装,安装后,重启IIS,这时再打开IIS,会发现多了一个新的模块:URL Rewrite

第二步:

在php网站根目录下新建web.config文件,如果已存在,则编辑该文件,内容如下:

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name=”UrlRewriteRule1″ enabled=”true” stopProcessing=”true”>
<match url=”.*” />
<conditions logicalGrouping=”MatchAll”>
<add input=”{REQUEST_FILENAME}” matchType=”IsFile” negate=”true” />
<add input=”{REQUEST_FILENAME}” matchType=”IsDirectory” negate=”true” />
</conditions>
<action type=”Rewrite” url=”url.php?url={R:0}” />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

在iis下添加php支持并启用rewrite后的问题

最近想把php网站从Linux服务器搬到Windows服务器下,因为Windows服务器已安装IIS,80端口被占用,无法安装Apache,所以只能往IIS添加php支持。

系统是Windows Server 2003,IIS为6.0,添加php支持百度一下一大堆,按照教程来,没问题,唯一要注意的是文件夹的权限问题。

因为这个php网站要使用apache的rewrite功能,IIS没有这个功能,搜索了下,发现有个ISAPI_Rewrite的插件,支持Apache的.htaccess文件,语法基本一致,所以就是它了。

下载安装,没什么问题,但是使用的时候,发现总取不到正确的值,经测试发现,url上被自动添加了/eurl.axd/GUID这样的字符串,导致了正则匹配出错了。这个是ASP.NET 4.0添加的,网上的解释是:

ASP.NET 4.0在安装的时候,会在IIS6注册一个ISAPI Filter,叫做”aspnet_filter.dll”,ISAPI Filter会先于ISAPI处理程序前执行,它会在所有的的无后缀的URL后面加一串字符“/eurl.axd/GUID”, 同时ASP.NET 4.0还会在IIS默认添加一个请求映射规则“*.axd”,映射到aspnet_isapi.dll。此时,所有的无后缀URL加上“/eurl.axd/GUID”后都会变成带.axd后缀,这样就匹配*.axd的映射规则进行ASP.NET的处理通道。在进入ASP.NET通道后,ASP.NET处理程序会删除掉“/eurl.axd/GUID”,让它还原到无后缀的原始情况,并且不会对后续的请求处理带来任何影响。此时,所有的无后缀请求,就进入了ASP.NET的处理通道中。

解决办法也很简单,打开iis管理器,在网站上右击→属性→ISAPI筛选器,删除 ASP.NET_4.0.30319.0 这条记录,然后在你的ASP.NET 4.0网站上,右击→属性→ISAPI筛选器,添加一条记录,名称为ASP.NET_4.0.30319.0,路径为 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll,点确定保存后,就可以了。

Vista及以上系统UAC权限问题

今天在Win8上测试了下我发布的程序,发现装在系统盘,读写一些文件会失败,一定要右键获取管理员权限才能使用。看来明天得升级所有的程序,在代码里请求管理员权限,这样就没问题了。如果你开启了UAC,那么会弹出对话框要求管理员权限;如果你关闭了UAC,那么就不会有提示,程序能直接获取到管理员权限。看来测试的还不够,最近发现了好几个问题了。。。大家多多测试吧,欢迎提意见!!!

C#在Vista及以上系统,申请管理员权限的方法

VS2010上的添加方法为,在可执行项目上右击,选择添加->新建项,然后选择应用程序清单文件,添加一个app.manifest文件,然后把 <requestedExecutionLevel  level=”asInvoker” uiAccess=”false” /> 这一行修改为 <requestedExecutionLevel  level=”requireAdministrator” uiAccess=”false” /> ,重新生成后,在Vista已以上系统运行时会弹出UAC对话框,请求管理员权限。