IIS配置web.config文件隐藏index.php实现伪静态/重定向功能的简单配置
web.config是xml配置文件,用于在IIS服务器下对url请求做重定向操作,简单举几个例子:
规则都是写在rules里的,可多条
具体的规则结构为:
<rule>
<!--正则匹配 例如所有的请求 取得请求参数使用{R:1}即可,{R:N}即为第N个匹配位的值-->
<match url="^.*$" />
<conditions>
<!--negate为无效设置,这里主要是把目录请求or文件css js 图片什么的排除-->
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" logRewrittenUrl="true" />
</rule>
这样一条规则就可以使我们隐藏index.php入口文件。
多条列子,第一条规则为将请求定位到en英文目录下,不详细解释了,我相信大家能领悟出其中的逻辑来
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<!--规则开始-->
<rules>
<!--规则名name不可重复 stopProcessing跳出解析-->
<rule name="en" stopProcessing="true">
<match url="^(en)/(.*$)"/>
<conditions>
<!--negate为无效设置,这里主要是把目录请求or文件css js 图片什么的排除-->
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="{R:1}/index.php/{R:2}" logRewrittenUrl="true" />
</rule>
<!--多条规则-->
<rule name="Wapcms" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>