溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中實現(xiàn)網(wǎng)址偽靜態(tài)的方法有哪些

發(fā)布時間:2020-08-12 10:15:00 來源:億速云 閱讀:187 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關(guān)PHP中實現(xiàn)網(wǎng)址偽靜態(tài)的方法有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

PHP實現(xiàn)網(wǎng)址偽靜態(tài)的方法:1、使用函數(shù)【$_SERVER['PATH_INFO']】操作實現(xiàn);2、配置【.htaccess】來,網(wǎng)站建設時使用【mod_rewrite】模塊來實現(xiàn)偽靜態(tài)。

PHP實現(xiàn)網(wǎng)址偽靜態(tài)的方法:

1.根據(jù)$_SERVER['PATH_INFO']來操作實現(xiàn)。

舉個列子比如你的網(wǎng)站的地址是 http://127.0.0.1/show_new.php/look-id-1.shtml

echo $_SERVER['PATH_INFO']

出來的結(jié)果就會是

 /look-id-1.shtml

看到這個我想大家可能已經(jīng)明白了。完整的demo

index.php

代碼如下:

index.php
 
$conn=mysql_connect("localhost","root","root")or dir("連接失敗");
mysql_select_db("tb_demo",$conn);
$sql="select * from news";
$res=mysql_query($sql);
header("content-type:text/html;charset=utf-8");
echo "<h2>新聞列表</h2>";
echo "<a href='add_news.html'>添加新聞</a><hr/>";
echo "<table>";
echo "<tr><td>id</td><td>標題</td><td>查看詳情</td><td>修改新聞</td></tr>";
while($row=mysql_fetch_assoc($res)){
 echo "<tr><td>{$row['id']}</td><td>{$row['title']}</td><td><a href='show_new.php/look-id-{$row['id']}.shtml'>查看詳情</a></td><td><a href='#'>修改頁面</a></td></tr>";
}
//上面的紅色的地址本來該是show_news.php?act=look&id={$row['id']}
echo "</table>";
//關(guān)閉資源
mysql_free_result($res);
mysql_close($conn);

show_new.php頁面

代碼如下:

show_new.php
 
header("Content-type:text/html;charset=utf-8");
$conn=mysql_connect("localhost","root","root");
mysql_select_db("tb_demo",$conn);
mysql_query("set names utf8");
 $pa = $_SERVER['PATH_INFO'];
//$pa  打印出來的值是  /look-id-1.html
//通過正則表達式匹配獲取的url地址
if(preg_match('/^\/(look)-(id)-([\d])\.shtml$/',$pa,$arr)){
 $act = $arr[1]; //這個是請求的look方法
 $id = $arr[3];  //這個是獲取的id 值
 $sql="select * from news  where id= $id";
 $res=mysql_query($sql);
 $res = mysql_fetch_assoc($res);
 echo $res['title']."<hr>".$res['content'];
}else{
 echo "url地址不合法";
}
mysql_close($conn);

看到上面的這個我想大家肯定懂了吧   其實這種方式用的不多的下面的給大家說第二種方法了啊

2.根據(jù)配置.htaccess來實現(xiàn)。

Apache的mod_rewrite是比較強大的,在進行網(wǎng)站建設時,可以通過這個模塊來實現(xiàn)偽靜態(tài)。

主要步驟如下:

1.檢測Apache是否開啟mod_rewrite功能

可以通過php提供的phpinfo()函數(shù)查看環(huán)境配置,找到“Loaded Modules”,其中列出了所有apache2handler已經(jīng)開啟的模塊,如果里面包括“mod_rewrite”,則已經(jīng)支持,不再需要繼續(xù)設置。如果沒有開啟“mod_rewrite”,則打開目錄 apache目錄下的“/apache/conf/” ,找到 httpd.conf 文件,再找到“LoadModule rewrite_module”,將前面的”#”號刪除即表示取用該功能。    如果沒有查找到“LoadModule” 區(qū)域,可以在最后一行加入

“LoadModule rewrite_module ,modules/mod_rewrite.so”

(獨占一行),之后重啟apache服務器。再通過phpinfo()函數(shù)查看環(huán)境配置就有“mod_rewrite”為項了.。

2.讓apache服務器支持.htaccess  

如何讓自己的本地APACHE服務器支持:“htaccess”呢? 只需修改apache的httpd.conf設置就可以讓 APACHE支持“.htaccess”了。打開 APACHE目錄的CONF目錄下的httpd.conf文件,找到: Options FollowSymLinks AllowOverride None 改為 Options FollowSymLinks AllowOverride All 就行了。

3.建立.htaccess文件

建立.htaccess文件時要注意,不能直接建,方法是通過記事本中的另存為菜單,在文件名窗口輸入:“.htaccess”,然后點擊保存。

4.rewrite規(guī)則學習

在新建.htaccess文件之后,就在里面寫入以下內(nèi)容: RewriteEngine on #rewriteengine為重寫引擎開關(guān)on為開啟off為關(guān)閉 RewriteRule ([0-9]{1,})$index.php?id=$1 在這里,RewriteRule是重寫規(guī)則,是用正則表達式的句子,([0-9]{1,})表示由數(shù)字組成的,$表示結(jié)束標志,表示以數(shù)字結(jié)束!如果要實現(xiàn)偽靜態(tài)頁面,

規(guī)則如下:

 RewriteEngine on RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2

在為個正則表達式中,([a-zA-Z]{1,})-([0-9]{1,}).html$是規(guī)則,index.php?action=$1&id=$2是要替換的格式,$1代表第1括號匹配的值,$2代表第二個括號的值,如此類推! 測試PHP腳本如下: index.php文件中的代碼如下:

echo ‘你的Action值為:’ . $_GET['action']; echo ‘ ’; 
echo ‘ID值為:’ . $_GET['id']; ?>

在瀏覽器地址欄輸入:

 localhost/page-18.html

輸出的是:

 你的Action值為:page ID值為:18

關(guān)于PHP中實現(xiàn)網(wǎng)址偽靜態(tài)的方法有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI