PHP中路由和rewrite的使用

一、場景介紹:

1、簡化url地址,方便大家記憶

2、有利于搜索引擎優化

3、安全(讓用戶看不出網站的目錄結構)

舉例:比如我這里將main控制器中的bb方法路由到kk,這樣,我們a標簽請求跳轉到cp.xiaobudiu.top/kk,實際上請求的卻是cp.xiaobudiu.top/main/bb。

實際上:我們可以將路由理解成一個字符串的別名,比如上邊,kk就是main/bb的別名。

?

?

二、單獨使用路由實現url隱藏目錄結構,優化url

?

1、定義連接符

這里使用的是crossphp框架,如果使用tp框架或者laravel框架等,也有對應的設置項。

注:這時,請求main控制器中的bb方法,url地址格式就從原來的cp.xiaobudiu.top/main/bb/? 變成? cp.xiaobudiu.top/main-bb/

?

2、定義a標簽到對應的控制器方法中

注:如果需要傳遞參數,可以拼接字符串。

當然,最好使用框架自帶的生成URL地址的方式(好處是動態生成url,并且支持傳遞參數)

比如:

?

3、瀏覽器生成的url地址如下:

這時,點擊a標簽,就會跳轉到main控制器中的bb方法。

?

4、通過框架路由,實現變化url,隱藏目錄結構,優化url的目的【其他框架類似】

注:其實,路由就是一個別名而已,不要想的特別高大上。

比如上邊,我將main控制器的bb方法路由到kk,那么我們請求cp.xiaobudiu.top/main-bb? ,? 和請求cp.xiaobudiu.top/kk? 請求的都是main控制器的bb方法。

?

5、定義a標簽

注:這時,我們為了隱藏目錄結構和優化url,則可以將a標簽的href更改成我們定義的路由地址

比如這里,我們由于定義了main/bb? 路由到 kk,所以a標簽這樣寫。

再次強調:路由只是一個別名,你想url怎么變化,都看你的心情定義路由。

?

6、這時,生成的a標簽鏈接如下

?

點擊a標簽,就會訪問到

?

這樣,我們就實現了更改url地址,隱藏目錄結構,優化url的目的。

?

?

三、使用路由和nginx rewrite規則相結合的方式(推薦)

?

1、為什么要使用路由和nginx rewrite規則相結合的方式

注:上面是單純使用路由達到這個更改url地址,隱藏目錄結構,優化url目的,但是實際場景中,我們生成url地址一般不是直接指定的,而是通過框架的方法來生成url,生成url時,肯定用的是原來的控制器和方法,而不是直接往上面寫路由,這時,我們生成的url格式就是

cp.xiaobudiu.top/main-bb ,? 而不是我們期望的 cp.xiaobudiu.top/kk , 這樣,也就達不到我們想要的隱藏目錄結構的目的。

這時,我們就需要結合路由和rewrite規則。

?

2、原理:

(1)舉例我們a標簽中的href 是通過框架的方法生成的url,生成之后的url地址格式如下:

cp.xiaobudiu.top/main-bb

(2)用戶點擊a標簽,我們通過nginx 的rewrite規則將當前url重定向到一個新的網址,也就是我們期望的網址

比如,我們在nginx中定義rewrite規則,將 main-bb 重定向到kk

location / {if (!-e $request_filename) {rewrite ^/main-bb-(\d+)/ /kk-$1/ permanent;rewrite ^/(.*)$ /index.php?$1 last;}}

這時,點擊a標簽(href為cp.xiaobudiu.top/main-bb),nginx服務器會自動將其永久重定向到 cp.xiaobudiu.top/kk

注:此時會報錯,因為找不到kk的位置(當然找不到了,我們還沒有定義路由,給main-bb起別名為kk呀)

(3)定義路由

 /*** 路由配置* 'index' => 'main:index'* 為 main->index 指定別名為index* 如果為控制器和方法指定了別名,會自動使用別名*/'router' => array('kk'        =>  'main:bb','help'      =>  'help:index',),

(4)現在,由于我們已經定義了相應的路由,nginx重定向后的url cp.xiaobudiu.top/kk? 就會自動找到main控制器的bb方法,也就實現了我們的目的。

?

注:領取阿里云優惠券、推薦碼(附使用教程):http://www.aliyouhui.top

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282216.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282216.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282216.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《NoSQL權威指南》導讀

引言 NoSQL權威指南“沒有什么會比引入新秩序更難,因為創新者必須要面對那些在舊環境中已經做得很好的對手,以及那些在新環境中做得很好的冷漠者。” ——Niccolo Machiavelli [1] 在過去的幾十年,我已經通過Elsevier/Morgan Kaufmann出版社出…

zookeeper的單實例和偽集群部署

原文鏈接: http://gudaoyufu.com/?p1395 zookeeper工作方式 ZooKeeper 是一個開源的分布式協調服務,由雅虎創建,是 Google Chubby 的開源實現。 分布式應用程序可以基于 ZooKeeper 實現諸如數據發布/訂閱、負載均衡、命名服務、分布式協 調/通知、集群管…

PHP開發常見功能實現流程

一、pc端網站登錄 1、獲取并過濾用戶提交的用戶名和密碼以及驗證碼 2、驗證用戶提交驗證碼和session中的驗證碼是否一致 3、驗證用戶名是否存在 4、根據用戶名獲取密碼,并校驗密碼是否一致 5、密碼一致,則登錄成功,跳轉到對應的首頁 圖示…

七牛直播云服務技術揭秘

以下根據七牛云首席布道師何李石現場演講內容整理。 直播模型及其實現 一個通用的直播模型一般包括三個模塊:主播方、服務器端和播放端。 首先是主播方,它是產生視頻流的源頭,由一系列流程組成: 第一,通過一定的設備來…

golang 標準庫間依賴的可視化展示

簡介 國慶看完 << Go 語言圣經 >>,總想做點什么,來加深下印象.以可視化的方式展示 golang 標準庫之間的依賴,可能是一個比較好的切入點.做之前,簡單搜了下相關的內容,網上也要討論,但是沒有發現直接能拿過來用的.標準庫之間,是必然存在依賴關系的,不同庫被依賴的程…

Amazon Alexa 新里程碑: 50000 個功能、 20000 種設備、 3500 個品牌

幾個月過去&#xff0c;Alexa的設備連接量、活躍度等各項數據又攀升了。昨日&#xff0c;亞馬遜智慧家庭副總裁DanielRausch在IFA大會上公布了Alexa的各項數據&#xff1a;全球范圍內&#xff0c;Alexa已經擁有50000個功能&#xff0c;與20000種設備相容&#xff0c;并與超過35…

C# 計算耗時的三種方法

概述計算一段程序的耗時是我們在編程中很常見的用法&#xff0c;那這節內容就通過實例的方式來演示幾種常用的統計耗時的方法.方法一&#xff1a;stopwatchstatic void Main(string[] args){Stopwatch sw new Stopwatch();sw.Start();Thread.Sleep(999);sw.Stop();Console.Wri…

《HTML5 2D游戲編程核心技術》——第1章,第1.3節特別功能

本節書摘來自華章出版社《HTML5 2D游戲編程核心技術》一書中的第1章&#xff0c;第1.3節特別功能&#xff0c;作者&#xff3b;美&#xff3d; 戴維吉爾里&#xff0c;更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。 1.3 特別功能 Snail Bait游戲有3個特別的功能&a…

XunSearch的安裝和加入服務器開機腳本以及將目錄寫入系統變量

一、安裝xunserach 1、cd ~ 2、wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2 #下載最新xunsearch包 3、tar -xjf xunsearch-full-latest.tar.bz2 #解壓xunsearch包 4、cd xunsearch-full-1.4.11/ #進入xunsearch包目錄 5、sh setup.sh #執…

dubbo源碼解析-zookeeper創建節點

前言 在之前dubbo源碼解析-本地暴露中的前言部分提到了兩道高頻的面試題,其中一道dubbo中zookeeper做注冊中心,如果注冊中心集群都掛掉,那發布者和訂閱者還能通信嗎?在上周的dubbo源碼解析-zookeeper連接中已經講到,這周解析的是另一道,即服務提供者能實現失效踢出是根據什么原…

配置mysql為主主復制步驟

mysql版本&#xff1a;mysql-5.6.24-solaris10-sparc-64bit.tar 操作系統&#xff1a;solaris 11g u10 操作用戶&#xff1a;使用非root進行操作安裝&#xff0c;a路服務器ip地址為192.168.1.1 b路ip地址為192.168.1.2&#xff08;應改為實際ip地址&#xff09; 1&#xff0c;安…

XunSearch的使用

一、項目的配置文件 1、要想使用xunsearch&#xff0c;首先需要進行配置文件的配置。 默認目錄在app下&#xff0c;如下面的結構&#xff0c;每一個搜索項目都需要有一個ini文件進行相應的配置。 舉例&#xff1a; project.name novel project.default_charset utf-8 serv…

《VMware vSphere設計(原書第2版)》——1.1 什么是設計

本節書摘來自華章出版社《VMware vSphere設計&#xff08;原書第2版&#xff09;》一 書中的第1章&#xff0c;第1.1節&#xff0c;作者&#xff1a;[美] 福布斯格思里&#xff08;Forbes Guthrie&#xff09;斯科特羅威&#xff08;Scott Lowe&#xff09;肯德里克科爾曼&…

SqlKata - 方便好用的 Sql query builder

SqlKata查詢生成器是一個用C# 編寫的功能強大的Sql查詢生成器。它是安全的&#xff0c;與框架無關。靈感來源于可用的頂級查詢生成器&#xff0c;如Laravel Query Builder和 Knex&#xff1a;https://knexjs.org/。SqlKata有一個富有表現力的API。它遵循一個干凈的命名約定&…

編寫高質量代碼:改善Java的151個建議四(基本類型)21-30

該書籍PDF下載地址&#xff1a;http://download.csdn.net/download/muyeju/10001473 基本類型有8個&#xff1a;byte&#xff0c;short&#xff0c;int&#xff0c;char&#xff0c;long&#xff0c;double&#xff0c;float&#xff0c;boolean 21.用偶判斷&#xff0c;不用奇…

ABP vNext微服務架構詳細教程(補充篇)——單層模板(下)

業務代碼2聚合服務聚合服務層和基礎服務層相同的道理&#xff0c;在Demo.Core.Contracts增加Services文件夾&#xff0c;并添加Notifications子文件夾&#xff0c;在其中添加Dtos文件夾并添加兩個DTO與基礎服務對應&#xff1a;using Volo.Abp.Application.Dtos;namespace Demo…

PHP 電子商城基本數據表

1、品牌表 tp_brand CREATE TABLE tp_brand (id smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT 品牌表,name varchar(60) NOT NULL DEFAULT COMMENT 品牌名稱,logo varchar(80) NOT NULL DEFAULT COMMENT 品牌logo,desc text NOT NULL COMMENT 品牌描述,url varcha…

摘要,日志

1.hashlib 模塊: 由于數據的不安全性,為了保證用戶的信息絕對安全,所有所有人的賬號密碼不能以明文的形式存儲, 而是經過適當的處理以密文的形式存儲. hashlib對同一個字符串在不同的語言,不同的環境(操作系統,版本,時間)中加密得到的是同一個密文串,不同的字符串得到的密文是不…

《網站情感化設計與內容策略》一第1章 情感化設計1.1 革命:有失亦有得

本節書摘來自異步社區《網站情感化設計與內容策略》一書中的第1章&#xff0c;第1.1節&#xff0c;作者 【美】Aarron Walter , Erin Kissane&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看 第1章 情感化設計 網站情感化設計與內容策略 1.1 革命&#xff1…

php自動加載機制的實現

一、什么是自動加載 自動加載就是當我們在當前文件中實例化一個不存在的類時&#xff0c;調用自動加載機制引入相應的類文件。 注&#xff1a;自動加載有兩種方式&#xff08;都是php內置的&#xff09;&#xff0c;一種是通過__autoload(),另一種是通過spl_autoload_registe…