### Rewrite(重写)
什么是 Rewrite? Rewrite 有什么用途? 做程序开发的技术人员来说都是知道,这里就不多写了,你如果还不懂那可就要找“度娘”恶补你的知识库了。
下面就来写一下 PkFrame 的在 WEB 服务器软件中的 Rewrite 的配置,这个配置也是针对前面【[访问路由](http://www.kancloud.cn/pkcms_cn/pkframe/249293)】一节写 FkFrame 的路由的配置,并无其它的配置。对于有丰富开发经验的技术人员来说只看了前面的一节也基本上也能知道如何写 Rewrite 的配置了。
这里就不那么详细的写了只写三个主流 WEB 服务器软件的 Rewrite 的配置了。这三个主流 WEB 服务器软件分别是 nginx、apache 和 IIS。为何不写其他的 WEB 服务器软件的配置,那是本人没有用过,写这三个大家都熟悉的不是够用了嘛!
马上进入正题,接下来,只简单的列出两种不同的配置的代码。
***
### nginx 的 Rewrite 的配置
nginx.file.conf 配置代码:
~~~
##nginx.file.conf
if (!-e $request_filename)
{
rewrite ^/(.*)$ /index.php/$1;
}
~~~
***
### apache http server 的 Rewrite 的配置
.htaccess 配置代码:
~~~
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
~~~
***
### IIS 的 Rewrite 的配置
如果你的服务器环境支持ISAPI_Rewrite的话,可以配置httpd.ini文件,添加下面的内容:
~~~
RewriteRule (.*)$ /index\.php\?s=$1 [I]
~~~
在IIS的高版本下面可以配置web.Config,在中间添加rewrite节点:
~~~
<rewrite>
<rules>
<rule name="OrgPage" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^(.*)$" />
<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}" />
</rule>
</rules>
</rewrite>
~~~
IIS 7.0 以上有种可视化添加的方式,因为可以直接将 apache http server 的 Rewrite 配置代码直接导入到 IIS 的 url 重写的组件中。
因此在配置 IIS 的 Rewrite 之前,首先要安装 IIS 的一个叫 URL 重写(Rewrite) 的组件,这个组件在 IIS 的安装选项中是没有的,要从微软的官网上找到下载 MSI 安装包,在本地进行安装。如何安装看以下的教程参考,这里就不多写了。
> [用于 IIS 7 (x86) 的 Microsoft URL 重写模块 2.0](https://www.microsoft.com/zh-cn/download/details.aspx?id=5747)
> [用于 IIS 7 (x64) 的 Microsoft URL 重写模块 2.0](https://www.microsoft.com/zh-CN/download/details.aspx?id=7435)
> [Microsoft Web](https://www.microsoft.com/web/downloads/)
通过 Microsoft Web 也是可以安装 URL 重写,IIS 7.0 之后的版本都通过 Microsoft Web 来安装 URL 重写的
> [IIS10 安装 php manager 和 URL Rewrite 2.0 组件的方法](http://blog.pkcms.cn/iis10-install-php-manager-and-url-rewrite/)
安装好 URL 重写的 IIS 组件之前,便可将上面 .htaccess 文件中的路由代码导入到 IIS 里头,然后保存应用,那么在 IIS 站点的根目录中就会一个 web.config 的文件产生,这个文件只对 IIS 生效。