在站点根目录下创建.htaccess文件,把以下规则复制到.htaccess文件中。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
在站点根目录创建web.config文件,把以下规则复制到web.config文件中,需要注意的是IIs7.5需要安装url规则组件。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="rule 3S" stopProcessing="true">
<match url="^(.*)$" />
<conditi>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditi>
<action type="Rewrite" url="/index.php/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
排除CSS、png等资源文件
我们设置完伪静态后可能,在访问页面的时候可能会出现部分css、图片等无法加载 的问题,那么我们可以设置路由规则,排除指定的文件类型,这样就不会受影响。
规则如下,由于.htaccess的排除规则网上很多,这里不再详述,基于IIS下的资料 比较少,目前提供IIS下的配置内容 。
<rule name="rule 2S" stopProcessing="true">
<match url="(.*\.(js|ico|gif|jpg|png|flv|swf|css))$" />
<action type="Rewrite" url="//{R:1}" />
</rule>
在网站根目录创建httpd.ini,把下面规则复制到httpd.ini文件中,需要注意的是 httpd.ini文件需要给network service权限
[ISAPI_Rewrite] RewriteRule .*\.(?:gif|jpg|png|css|js|txt|jpeg|swf|flv) $0 [I,L] RewriteRule /httpd(?:\.ini|\.parse\.errors) / [F,I,O] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(?!/index.php)(?!/admin.php)(.*)$ /index.php/$1 [L]
在server段location /加载此内容
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
reload nginx,就可以访问了。
在config.ini.php中设置,如果只想前台URL伪静态,那么只在前台的config.php文件中设置就可以,如下:
'URL_MODEL'=>2,
'URL_HTML_SUFFIX' =>'.html',