使用mod_rewrite清理IIS中的URL

时间:2010-12-10 03:32:20

标签: iis mod-rewrite isapi-rewrite

我有一个mod_rewrite问题。或者更准确地说,ISAPI_Rewrite存在问题,ISAPI_Rewrite是IIS的mod_rewrite克隆。具体来说,ISAPI_Rewrite v3在IIS 7上运行。它的目的是与mod_rewrite相同,所以我希望我的问题也适用于mod_rewrite。

我的问题归结为:我有一个脚本bar.php,我想通过网址foo访问该脚本。我首先将foo重写为bar。然后尝试将干净的URL转换为真实的文件名。

RewriteRule ^foo$ bar

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .* $0.php

RewriteCond失败,因为${REQUEST_FILENAME}仍然说“foo”而不是“bar”。第一次重写后不会更新。

我该如何使这项工作?我可以通过简单地写RewriteRule ^foo$ bar.php来解决这个问题。但我强烈希望将URL重映射规则与文件扩展名规则分开。

1 个答案:

答案 0 :(得分:0)

暂定答案......

RewriteCond %{DOCUMENT_ROOT}/$0.php -f

通过使用$0,我可以访问最新的重写URL,这让我很开心。但我必须添加%{DOCUMENT_ROOT}才能将其转换为文件名,这让我感到难过。有点像kludge。