我有这个ISAPI_Rewrite规则:
RewriteRule /([^/.?]+) /sc.asp?p=$1 [I,L]
此规则应重写Urls,如:
/一些-制品
/第二条
和不应该重写网址,如:
/home.asp
/ admin(因为有一个名为admin的目录)
/管理/
/位点/格特曼
它在ISAPI_Rewrite中运行良好 昨天我买了一台Windows 2008 R2 VPS,我开始将我的ASP经典Web应用程序转移到新服务器上。现在,除了URL重写之外,一切都运行良好。我稍微google了一下,发现IIS7 URL Rewrite模块与ISAPI_Rewrite完全不同。
我创建了空白规则。在我设置/([^/.?]+)
的模式中,在行动中 - >操作类型我设置Rewrite
并在操作中 - >动作属性 - >重写网址我设置了sc.asp?p={R:0}
。它没用。
经过一些谷歌搜索后,我发现我必须在模式的开头远程调用/
字符(所以我的模式现在是([^/.?]+)
)。所以我做了,现在,它只是重写任何 url,它应该只重写不是目录或文件的URL。
有什么想法吗?
谢谢。
答案 0 :(得分:1)
避免重写实际指向现有文件的URL的最简单方法是添加以下条件:
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
此外,您的匹配模式显示了一个常见的误解。查询字符串未传递到匹配URL模式,因此您无需查找?
。