技術問答

      基于thinkphp5的URL偽靜態優化建議

      2018-12-03
      0
      最近基于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.設置絕對路徑.
      如果以上方法還未完全解決路徑問題,那么您的資源文件的路徑最好設置為絕對路徑,可以以開頭。
       
      綜合以上的幾個步驟,網站的偽靜態工作,應該可以完美解決了,今天就寫到這了,希望對大家有用。
      部分文章來源與網絡,若有侵權請聯系站長刪除!

      推薦產品