(一),環境檢測和開啓僞靜態
要使用url路由,以下條件是必備的,缺一不可:
1,服務器環境本身支持url rewrite重寫功能,能正確識別出以路徑符號 "/" 爲間隔的url地址,這是必要的條件。
以apache爲例說明如可開啓僞靜態:iWebShop系統默認是通過根目錄下的.htaccess文件對apache進行僞靜態修改的,所以必須保證根目錄下
要有.htaccess文件,其次打開apache的配置文件找到對應的web目錄配置項,修改爲如下:
<Directory "YourDocumentRoot">
Options Indexes FollowSymLinks ExecCGI Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
注意:確保 AllowOverride 爲 All
重啓服務即可。
簡單的測試方法:直接在你iwebshop主域名後追加 /simple/cart ,看能否正確進入購物車頁面,如網站: http://shop.aircheng.com/simple/cart ,
如果通過了上面的測試那麼恭喜你,你的服務器環境可以支持更個性化,更美觀,更利於seo收錄的url訪問方式了。
如果之前的測試依然沒有成功那麼你的服務器環境就僅能使用原生態的 url方式了,千萬不要強制開啓iwebshop的 僞靜態設置,否則整站將無法訪問!
2,設置iwebshop的url訪問方式爲pathinfo格式(以"/"分割各個參數的路徑格式)。
這裏提供2種修改方法:
1,登錄後臺進入 <網站設置> 頁面,點選 <系統設置> 選項卡,修改最後一項 <僞靜態> 選擇開啓即可;
2, 打開程序根目錄下的 config/config.php 文件,把 rewriteRule 這項的參數修改爲 pathinfo 即可,像這樣:'rewriteRule' => 'pathinfo'
注意:如果設置了pathinfo參數後,網站出現了異常,如頁面無法正常顯示,則說明你的服務器環境不支持這種url訪問方式,
此時需要立即把 rewriteRule 項還原爲 url 參數,像這樣:'rewriteRule' => 'url'
(二),路由配置方法及實例:
進行路由配置還是需要一些最基本的編程知識,當然也可以直接用教程提供的例子。
所有的路由規則都放置在程序根目錄下的 config/config.php 文件中,鍵名爲:urlRoute 的數組裏面。
默認情況下config.php文件中是沒有 urlRoute 配置的,可以在文件中的合適位置上鍵入:
'urlRoute' => array(),
此後的所有規則都必須填寫到 array() 裏面才能生效,多條路由規則以逗號分隔。
每條路由規則包括 鍵和值 二部分,如:'goods_<id:\d+>.html' => 'site/products'
鍵的部分(左邊部分) 表示要生成的url格式;值的部分(右邊部分) 表示實際要訪問的url地址,也就是映射到哪個controller或action去執行,且分割符號必須爲 '/' 。
路由中的 <id:\d> 是對於路徑中動態參數的一種引用,並且數據帶有正則校驗性質。
上面所舉例的路由規則表述爲:所有 goods_<id:\d+>.html 格式的url,且存在數據類型爲數字的 id 參數,都由 site/products 來執行處理,並且頁面中原來爲 site/products 的地址都被
自動改寫成了 goods_<id:\d+>.html 這種格式。
在iwebshop中 "site/products/id/商品ID" 這個路徑是商品詳情頁面的地址,設置了此路由後所有商品詳情頁面都會以靜態頁面的url形式進行展現。
下面介紹一些實用的路由規則:
'<action:.*>' => 'site/<action>' 讓前臺所有site控制器的url直接變成動作名稱
'admin' => 'systemadmin/index' 直接輸入admin即可進入後臺
'new<id:\d+>.html' => 'site/article_detail' 美化商城資訊模塊,如id爲16的諮詢url爲:new16.html
案例:
'urlRoute' => array (
'article.html' => 'site/article',
'article-<id:\\d+>.html' => 'site/article_detail',
'item-<id:\\d+>.html' => 'site/products',
'list-<cat:\\d+>.html' => 'site/pro_list',
'tuan.html' => 'site/groupon',
'brand.html' => 'site/brand',
'brand-zone.html' => 'site/brand_zone',
'cart.html' => 'simple/cart',
'login.html' => 'simple/login',
'help.html' => 'site/help',
'help-index.html' => 'site/help_list',
'notice.html' => 'site/notice',
'tuan-list.html' => 'site/groupon_list',
'search.html' => 'site/search_list',
'error.html' => 'site/error',
'notice-<id:\\d+>.html' => 'site/notice_detail',
),