最近基于thinkphp5开发了个导购网站cq2.cn,主要获得天猫优惠券和淘宝折扣券。现在有时间,将遇到的伪静态问题整理下,与大家分享。
1.设置URL伪静态
在config.php中设置,如果只想前台URL伪静态,那么只在前台的config.php文件中设置就可以,如下:
'URL_MODEL'=>2,
'URL_HTML_SUFFIX' =>'.html',
这样就可以将原来如:
改动前:http://www.cq2.cn/index.php?m=index&a=index
改动后:http://www.cq2.cn/index.php/Index/index.html
其中'URL_MODEL'=>2设置url的方式,'URL_HTML_SUFFIX' =>'.html'设置后缀。
2.将index.php隐藏。
官网提供了比较详细的linux下的配置方式,参考官网就可以,我这边主要
提供IIS下面的伪静态配置,先直接给出两种环境下的配置。
*支持.htaccess文件的配置如下
创建一个.htaccess文件,内容为:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
保存后放到网站的根目录下就可以。
*IIS下的配置如下
创建一个web.config,内容为:
<?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>
同理保存放到网站的根目录下就可以,这两个环境的路由规则是一样的,因此实现的功能效果也是一样的。
改动前地址::http://www.cq2.cn/index.php/Index/index.html
改动后地址:http://www.cq2.cn/Index/index.html
3.URL地址简化
如果觉得我们以上的伪静态地址路径层次够深,想直接在根目录下的地址如:
http://www.cq2.cn/index_index.html
对搜索引擎更友好,那么可以在配置文件中设置:
'URL_PATHINFO_DEPR' => '_',
这样就可以简化URL的层级。
改动前地址:http://www.cq2.cn/Index/index.html
改动后地址:http://www.cq2.cn/Index_index.html
4.排除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>
5.设置绝对路径.
如果以上方法还未完全解决路径问题,那么您的资源文件的路径最好设置为绝对路径,可以以开头。
综合以上的几个步骤,网站的伪静态工作,应该可以完美解决了,今天就写到这了,希望对大家有用。