首頁 後端開發 php教程 php url伪静态弥合析

php url伪静态弥合析

Jun 13, 2016 am 10:54 AM
action controller path router strpos

php url伪静态化解析

1、大家来说说URL映射吧
? ?一般url映射有两种方式,一种是通过mod_rewrite实现,这种网上教材很多我也不多说了。另外一种是在程序中模拟,比如类似zend Framework中的那种方式/index.php/controller/action/var1/value1/var2/value2/。这里方 式其实最主要是通过一个统一的输入接口,然后对url进行解析,最后转发到相应的controller中的module。

? ? 我这里写了两个简单函数来模拟。
? ? 第一个函数主要是进行地址解析,把类似/index.php/controller/action/var1/value1/var2/value2/的地址解析出来,一般来说要解析成三部分:controller,module,params。

<?php /** *对url路由进行简单的解析,支持对/path/to/site/index.php/module/action/parm/value * /path/to/site/index.php?/module/action/parm/value和 * /path/to/site/?/module/action/parm/value三种形式的处理 [email&#160;protected]:null [email&#160;protected]:router array */function url_router() {	$path = strip_tags ( $_SERVER ['REQUEST_URI'] );	$strpos = strpos ( $path, '.php' );	if ($strpos) {		$path = substr ( $path, $strpos + 4 );	} else {		if (empty ( $_SERVER ['QUERY_STRING'] )) {			$strpos = strpos ( $path, '?' );			if ($strpos) {				$path = substr ( $path, $strpos + 1 );			} else {				$path = '';			}		} else {			$path = $_SERVER ['QUERY_STRING'];		}	}	//统一化$path的格式,如果$path的第一个字符为/则去掉	if ($path [0] == '/') {		$path = substr ( $path, 1 );	}	//解析,并且路由	if (! empty ( $path )) {		$path = explode ( '/', $path );		$router ['controller'] = $path [0];		$router ['action'] = (! empty ( $path [1] )) ? $path [1] : 'index';		//print_r($path);		for($i = 2; $i < sizeof ( $path ); $i = $i + 2) {			$params [$path [$i]] = (isset ( $path [$i + 1] )) ? $path [$i + 1] : '';		}		$router ['params'] = $params;	} else {		//默认路由信息		$router ['controller'] = 'index';		$router ['action'] = 'index';		$router ['params'] = array ();	}	return $router;}?> 
登入後複製

这里就完成主要的url解析功能,然后是转发映射,下面这个函数实现(注意这个函数的实现是结合了我自己的架构,所以你采用的话需要相应的修改,当然你的MVC如果类似zend Framework,那应该要该的不多。)

<?phpfunction url_dispatch($router, $app_path = '/app/controllers/') {	require_once (SERVER_PATH . '/libs/controller.class.php');	$controller = $router ['controller'] . 'Controller';	//echo SERVER_PATH.$app_path.$controller.'.class.php';	if (! file_exists ( SERVER_PATH . $app_path . $controller . '.class.php' ))		die ( '缺少必要的类!' );	require_once (SERVER_PATH . $app_path . $controller . '.class.php');	$controller = new $controller ();	$controller->_setParam ( $router ['params'] );	$controller->{$router ['action'] . 'Action'} ();	return true;}?> 
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1273
29
C# 教程
1252
24
設定Linux系統的PATH環境變數步驟 設定Linux系統的PATH環境變數步驟 Feb 18, 2024 pm 05:40 PM

Linux系統如何設定PATH環境變數在Linux系統中,PATH環境變數用來指定係統在命令列中搜尋執行檔的路徑。正確設定PATH環境變數可以方便我們在任何位置執行系統指令和自訂指令。本文將介紹如何在Linux系統中設定PATH環境變量,並提供詳細的程式碼範例。查看目前的PATH環境變數在終端機中執行以下指令,可以查看目前的PATH環境變數:echo$P

SpringBoot掃描不到Controller怎麼解決 SpringBoot掃描不到Controller怎麼解決 May 14, 2023 am 08:10 AM

SpringBoot小白創建項目​​,掃描不到Controller一系列問題1.2.3.4.5.6.還有一個方法是在啟動服務類的入門,添加@ComponentScan(basePackages={“xxx.xxx.xx”,“xxx.xxx .xx”})裡面的是包的全限定名,可以為多個SpringBoot自訂controller無法掃描到SpringBoot自訂controller路由找不到,原因是啟動類別和自訂的Controller包不在同一級目錄下。官方建議application.java放的位

DJI Osmo Action 5 Pro:發售日期已定,零售商透露發售價格可能會低於 GoPro Hero 13 Black DJI Osmo Action 5 Pro:發售日期已定,零售商透露發售價格可能會低於 GoPro Hero 13 Black Sep 04, 2024 am 06:51 AM

大疆尚未確認推出新運動相機的計畫。相反,GoPro 今年似乎將領先其競爭對手,並透露將於 9 月 4 日推出兩款新的運動相機。

React Router使用指南:如何實現前端路由控制 React Router使用指南:如何實現前端路由控制 Sep 29, 2023 pm 05:45 PM

ReactRouter使用指南:如何實現前端路由控制隨著單頁應用的流行,前端路由成為了一個不可忽視的重要部分。 ReactRouter作為React生態系統中最受歡迎的路由庫,提供了豐富的功能和易用的API,使得前端路由的實作變得非常簡單和靈活。本文將介紹ReactRouter的使用方法,並提供一些具體的程式碼範例。安裝ReactRouter首先,我們需要

SpringBoot多controller如何加入URL前綴 SpringBoot多controller如何加入URL前綴 May 12, 2023 pm 06:37 PM

前言在某些情況下,服務的controller中前綴是一致的,例如所有URL的前綴都為/context-path/api/v1,需要為某些URL加上統一的前綴。能想到的處理辦法為修改服務的context-path,在context-path中加上api/v1,這樣修改全域的前綴能夠解決上面的問題,但存在弊端,如果URL存在多個前綴,例如有些URL需要前綴為api/v2,就無法區分了,如果服務中的一些靜態資源不想添加api/v1,也無法區分。下面透過自訂註解的方式實現某些URL前綴的統一添加。一、

如何設定path環境變數 如何設定path環境變數 Sep 04, 2023 am 11:53 AM

設定path環境變數的方法:1、Windows系統,開啟“系統屬性”,點選“屬性”選項,點選“進階系統設定”,在“系統屬性”視窗中,選擇“進階”標籤,然後點選“環境變量」按鈕,找到並點擊「Path」編輯儲存後即可;2、Linux系統,打開終端,打開你的bash配置文件,在文件末尾添加「export PATH=$PATH:文件路徑」保存即可;3、 MacOS系統,操作同上。

如何正確設定Linux中的PATH環境變數 如何正確設定Linux中的PATH環境變數 Feb 22, 2024 pm 08:57 PM

如何正確設定Linux中的PATH環境變數在Linux作業系統中,環境變數是用來儲存系統層級的設定資訊的重要機制之一。其中,PATH環境變數被用來指定係統在哪些目錄中尋找可執行檔。正確設定PATH環境變數是確保系統正常運作的關鍵步驟。本文將介紹如何正確設定Linux中的PATH環境變量,並提供具體的程式碼範例。 1.查看目前PATH環境變數在終端機中輸入以下命

java中如何配置path環境變數 java中如何配置path環境變數 Nov 15, 2023 pm 01:20 PM

設定步驟:1、找到Java安裝目錄;2、找到系統的環境變數設定;3、在環境變數視窗中,找到名為「Path」的變量,並點擊編輯按鈕;4、在彈出的編輯環境變數窗口中,點選「新建」按鈕,並在彈出的對話框中輸入Java的安裝路徑;5、確認輸入正確後,點選「確定」按鈕即可。

See all articles