您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關使用Ci框架url重寫過程是什么樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
需求,在框架里面訪問地址 https://www.xx.net/de/twitter-video-download 由于框架里面方法不能使用-來命名,
我想到的方法是 twitter_video_download 為方法名,但是ci 框架本身的/ 導致重寫不成功,
所以改了ci 框架的動態訪問方式
問,如:
http://www.myweb.com/index.php/weclome/index (welcome表示控制器,index表示控制器中的一個方法)。
http://www.myweb.com/index.php/admin/welcome/index (admin表示控制器controler文件夾中的一個子文件,welcome表示admin里面的一個控制器,index表示welcome控制器中的一個方法)。
二、以前習慣用 http://www.myweb.com/index.php?c=welcome&m=index&x=123131 這種普通模式進行訪問,對于這樣的要怎么弄了,我想 CI 這種流行的框架,不會只有一種路徑訪問URL形式,這個基于MVC模式的框架,一定有那種普通模式進行訪問URL的,這個一定和配置文件有關的,實踐證明這個是正確的。
方法:打開應用文件application找到配置文件夾config,然后找到config.php文件,如下圖
//以前 //$config['uri_protocol'] = 'REQUEST_URI'; //改之后 $config['uri_protocol'] = 'PATH_INFO'; $config['url_suffix'] = ''; $config['language'] = 'english'; $config['charset'] = 'UTF-8'; $config['enable_hooks'] = FALSE; $config['subclass_prefix'] = 'MY_'; $config['composer_autoload'] = FALSE; $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; //以前 //$config['enable_query_strings'] = FALSE; //改之后 $config['enable_query_strings'] = TRUE;
下面是nginx 重寫的規則
location / {
location / {rewrite "([^/]{1,})/{1}([^/]{1,})-([^/]{1,})-([^/]{1,})" /index.php?c=$1&m=$2_$3_$4 last;rewrite "^/([^/]*)/{0,}" /index.php?c=$1&m=index last;break;}
break;
}
上面為什么需要加雙引號 在nginx 重啟時候出現這個錯誤 nginx:[emerg] directive “rewrite” is not terminated by “;”錯誤
錯誤原因:
后來調試發現,這是由于規則里有大括號“{ }”的符號,Nginx誤以為這是規則的結尾,產生錯誤。
解決方法:
因此,為避免這種情況的發生,需要用雙引號把偽靜態規則給標識出來,就可以了。
下面是apache的規則
RewriteEngine on RewriteCond $1 !^(index.php|admin.php|images|statics|robots.txt) #/de 和 /de/都可以訪問 RewriteRule ^([^/]*)/{0,}$ /index.php?c=$1&m=index [L] #/de/a-video-b -----> /index.php?c=de&m=a_video_b RewriteRule ([^/]{1,})/{1}([^/]{1,})-([^/]{1,})-([^/]{1,}) /index.php?c=$1&m=$2_$3_$4 [L]
-
關于使用Ci框架url重寫過程是什么樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。