最近基于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.設置絕對路徑.
如果以上方法還未完全解決路徑問題,那么您的資源文件的路徑最好設置為絕對路徑,可以以開頭。
綜合以上的幾個步驟,網站的偽靜態工作,應該可以完美解決了,今天就寫到這了,希望對大家有用。