我想检查带有requestedurl + .php的文件是否存在。
在apache中我可以使用RewriteCond%{REQUEST_FILENAME} .php -f
这样它就可以将我的请求test.com/login重写为test.com/login.php
我想对iis重写规则做同样的事。
我试过以下。
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}\.php" matchType="IsFile" />
</conditions>
<action type="Rewrite" url="{R:1}.php" />
</rule>
<rule name="Imported Rule 2">
<match url="^(.*)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="allpages.php" />
</rule>
</rules>
</rewrite>
但它不起作用。
提前感谢您的帮助
答案 0 :(得分:1)
在第一条规则中将{REQUEST_FILENAME}\.php
更改为{REQUEST_FILENAME}.php
。
此外,无需检查请求的URL是否作为目录存在。
仅在login.php退出时才将'test.com/login'重写为'test.com/login.php',请使用:
<rule name="Rewrite to PHP">
<match url="^(.*)$" />
<conditions>
<add input="{REQUEST_FILENAME}.php" matchType="IsFile" />
</conditions>
<action type="Rewrite" url="{R:0}.php" />
</rule>
测试