1. thinkphp5 怎麼修改分頁的url地址
路由配置:
'/^proct\/lists\/(\d+)-(\d+)-(\d+)-(\d+)$/' => 'Proct/lists?id=:1&aid=:2&sid=:3&p=:4',
復制代碼
修正Library\Think\Page.class.php分類以支持路由
//在23行,修改訪問修飾符private為public
public $url='';
//在70行,防止經過傳參後會出現問題urlencode('[PAGE]')轉為小寫,修改為
$this->url = str_replace(strtolower(urlencode('[PAGE]')), $page, $this->url);//開啟URL不區分大小寫時處理
return str_replace(urlencode('[PAGE]'), $page, $this->url);
//在80行,修正為以下實現自定義URL
/* 生成URL */
if(empty($this->url)){
$this->parameter[$this->p] = '[PAGE]';
$this->url = U(ACTION_NAME, $this->parameter);
}
//使用示例
$Page = new \Think\Page($count,15);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數(25)
$page_tpl = urlencode('[PAGE]');
$Page->url = U("Proct/list/{$this->id}-{$this->aid}-{$this->sid}-{$page_tpl}");
$show = $Page->show();
2. thinkphp url 模式怎麼更改
TP5已經不支持普通模式的URL 要多看手冊啊
URL設計
ThinkPHP5.0在沒有啟用路由的情況下典型的URL訪問規則是:
http://serverName/index.php(或者其它應用入口文件)/模塊/控制器/操作/[參數名/參數值...]
支持切換到命令行訪問,如果切換到命令行模式下面的訪問規則是:
>php.exe index.php(或者其它應用入口文件) 模塊/控制器/操作/[參數名/參數值...]
可以看到,無論是URL訪問還是命令行訪問,都採用PATH_INFO訪問地址,其中PATH_INFO的分隔符是可以設置的。
注意:5.0取消了URL模式的概念,並且普通模式的URL訪問不再支持,但參數可以支持普通方式傳值,例如:
>php.exe index.php(或者其它應用入口文件) 模塊/控制器/操作?參數名=參數值&...
如果不支持PATHINFO的伺服器可以使用兼容模式訪問如下:
/index.php(或者其它應用入口文件)?s=/模塊/控制器/操作/[參數名/參數值...]
必要的時候,我們可以通過某種方式,省略URL裡面的模塊和控制器。
URL大小寫
默認情況下,URL是不區分大小寫的,也就是說 URL裡面的模塊/控制器/操作名會自動轉換為小寫,控制器在最後調用的時候會轉換為駝峰法處理。
例如:
http://localhost/index.php/Index/Blog/read// 和下面的訪問是等效的
http://localhost/index.php/index/blog/read
如果訪問下面的地址
http://localhost/index.php/Index/BlogTest/read// 和下面的訪問是等效的
http://localhost/index.php/index/blogtest/read
在這種URL不區分大小寫情況下,如果要訪問駝峰法的控制器類,則需要使用:
http://localhost/index.php/Index/blog_test/read
模塊名和操作名會直接轉換為小寫處理。
如果希望URL訪問嚴格區分大小寫,可以在應用配置文件中設置:
// 關閉URL中控制器和操作名的自動轉換'url_convert' => false,
一旦關閉自動轉換,URL地址中的控制器名就變成大小寫敏感了,例如前面的訪問地址就要寫成:
http://localhost/index.php/Index/BlogTest/read
但是下面的URL訪問依然是有效的:
http://localhost/index.php/Index/blog_test/read
下面的URL訪問則無效:
http://localhost/index.php/Index/blogtest/read
需要注意:路由規則中定義的路由地址是按照控制器名的實際名稱定義(區分大小寫)。
3. php 更改url
說個對你這種情況來說,最簡單的實現
通過&符截取,
$url = "你上面那一大串";
$s = explain($url,'&');
$s[0] 就是你想要的。
好長時間沒用PHP了,不知道方法名寫的對不對,反正是這個意思
更多PHP技術請關注 http://www.gretheer.com
4. ThinkPHP 網址格式URL地址怎麼設置~呢
/ThinkPHP/conf/convention.php
/* URL設置 */
'URL_CASE_INSENSITIVE' => true, // 默認false 表示URL區分大小寫 true則表示不區分大小寫
'URL_MODEL' => 1, // URL訪問模式,可選參數0、1、2、3,代表以下四種模式:
// 0 (普通模式); 1 (PATHINFO 模式); 2 (REWRITE 模式); 3 (兼容模式) 默認為PATHINFO 模式
'URL_PATHINFO_DEPR' => '/', // PATHINFO模式下,各參數之間的分割符號
'URL_REQUEST_URI' => 'REQUEST_URI', // 獲取當前頁面地址的系統變數 默認為REQUEST_URI
'URL_HTML_SUFFIX' => 'html', // URL偽靜態後綴設置
'URL_DENY_SUFFIX' => 'ico|png|gif|jpg', // URL禁止訪問的後綴設置
最好把這段復制到自己的application/commen/conf/config.php里修改。這樣避免污染框架。
5. php如何改寫搜索時url
Rewrite On
RewriteRule ^search?q=(.*)$ /search/index.php?keyboard=$1
6. PHP 修改URL參數問題
preg_replace('/page=(\d)/', 'page=10', $string);
裡面的page=10,你可以換成page=$page,這是你要跳轉到的頁碼
7. 怎麼用PHP修改URL的後面有符號的部分
1、用parse_url() 解析url,取出你想要的部分。
2、用http_build_query() 構建查詢字元串,也就是問號後面的那部分。
<?php
$url="xx.php?levelids=level2&id=45";
// 設置了 PHP_URL_PATH,意思是只取 xx.php
$path=parse_url($url, PHP_URL_PATH);
// 構建查詢字元串
$query=http_build_query(array('location'=>'j307'));
// 列印出 xx.php?location=j307
echo "$path?$query";
?>
這些函數可以參考php手冊的URLs部分
8. thinkphp3.2 怎麼修改url的模式
入口文件是應用的單一入口,對應用的所有請求都定向到應用入口文件,系統會從URL參數中解析當前請求的模塊、控制器和操作:
http://serverName/index.php/模塊/控制器/操作
這是3.2版本的標准URL格式。
可以通過設置模塊綁定或者域名部署等方式簡化URL地址中的模塊及控制器名稱。
ThinkPHP框架的URL是區分大小寫(主要是針對模塊、控制器和操作名,不包括應用參數)的,這一點非常關鍵,因為ThinkPHP的命名規范是採用駝峰法(首字母大寫)的規則,而URL中的模塊和控制器都是對應的文件,因此在Linux環境下面必然存在區分大小寫的問題。
框架內置了一個配置參數用於解決URL大小寫的問題,如下:
'URL_CASE_INSENSITIVE'=>true,
當URL_CASE_INSENSITIVE設置為true的時候表示URL地址不區分大小寫,這個也是框架在部署模式下面的默認設置。
當開啟調試模式的情況下,這個參數是false,因此你會發現在調試模式下面URL區分大小寫的情況。
如果我們直接訪問入口文件的話,由於URL中沒有模塊、控制器和操作,因此系統會訪問默認模塊(Home)下面的默認控制器(Index)的默認操作(index),因此下面的訪問是等效的:
http://serverName/index.phphttp://serverName/index.php/Home/Index/index
這種URL模式就是系統默認的PATHINFO模式,不同的URL模式獲取模塊和操作的方法不同,ThinkPHP支持的URL模式有四種:普通模式、PATHINFO、REWRITE和兼容模式,可以設置URL_MODEL參數改變URL模式。
URL模式
URL_MODEL設置
普通模式0
PATHINFO模式1
REWRITE模式2
兼容模式3
如果你整個應用下面的模塊都是採用統一的URL模式,就可以在應用配置文件中設置URL模式,如果不同的模塊需要設置不同的URL模式,則可以在模塊配置文件中設置。
普通模式也就是傳統的GET傳參方式來指定當前訪問的模塊和操作,例如:
http://localhost/?m=home&c=user&a=login&var=value
m參數表示模塊,c參數表示控制器,a參數表示操作(當然這些參數都是可以配置的),後面的表示其他GET參數。
如果默認的變數設置和你的應用變數有沖突的話,你需要重新設置系統配置,例如改成下面的:
'VAR_MODULE'=>'mole',//默認模塊獲取變數'VAR_CONTROLLER'=>'controller',//默認控制器獲取變數'VAR_ACTION'=>'action',//默認操作獲取變數
上面的訪問地址則變成:
http://localhost/?mole=home&controller=user&action=login&var=value
注意,VAR_MODULE只能在應用配置文件中設置,其他參數可以則也可以在模塊配置中設置
PATHINFO模式是系統的默認URL模式,提供了最好的SEO支持,系統內部已經做了環境的兼容處理,所以能夠支持大多數的主機環境。對應上面的URL模式,PATHINFO模式下面的URL訪問地址是:
http://localhost/index.php/home/user/login/var/value/
PATHINFO地址的前三個參數分別表示模塊/控制器/操作。
不過,PATHINFO模式下面,依然可以採用普通URL模式的參數方式,例如:
http://localhost/index.php/home/user/login?var=value
依然是有效的
PATHINFO模式下面,URL是可定製的,例如,通過下面的配置:
//更改PATHINFO參數分隔符'URL_PATHINFO_DEPR'=>'-',
我們還可以支持下面的URL訪問:
http://localhost/index.php/home-user-login-var-value
REWRITE模式是在PATHINFO模式的基礎上添加了重寫規則的支持,可以去掉URL地址裡面的入口文件index.php,但是需要額外配置WEB伺服器的重寫規則。
如果是Apache則需要在入口文件的同級添加.htaccess文件,內容如下:
<IfMolemod_rewrite.c>
RewriteEngineon
RewriteCond%{REQUEST_FILENAME}!-dRewriteCond%{REQUEST_FILENAME}!-fRewriteRule^(.*)$index.php/$1[QSA,PT,L]</IfMole>
接下來,就可以用下面的URL地址訪問了:http://localhost/home/user/login/var/value
更多環境的URL重寫支持參考部署部分的URL重寫。
兼容模式
兼容模式是用於不支持PATHINFO的特殊環境,URL地址是:http://localhost/?s=/home/user/login/var/value
可以更改兼容模式變數的名稱定義,例如:
'VAR_PATHINFO'=>'path'
PATHINFO參數分隔符對兼容模式依然有效,例如:
//更改PATHINFO參數分隔符'URL_PATHINFO_DEPR'=>'-',
使用以上配置的話,URL訪問地址可以變成:http://localhost/?path=/home-user-login-var-value
兼容模式配合Web伺服器重寫規則的定義,可以達到和REWRITE模式一樣的URL效果。
例如,我們在Apache下面的話,.htaccess文件改成如下內容:
<IfMolemod_rewrite.c>
RewriteEngineon
RewriteCond%{REQUEST_FILENAME}!-dRewriteCond%{REQUEST_FILENAME}!-fRewriteRule^(.*)$index.php?s=/$1[QSA,PT,L]</IfMole>
就可以和REWRITE模式一樣訪問下面的URL地址訪問了:http://localhost/home/user/login/var/value