這篇文章將為大家詳細講解有關PHP中實現網址偽靜態的方法有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
PHP實現網址偽靜態的方法:1、使用函數【$_SERVER['PATH_INFO']】操作實現;2、配置【.htaccess】來,網站建設時使用【mod_rewrite】模塊來實現偽靜態。
PHP實現網址偽靜態的方法:
1.根據$_SERVER['PATH_INFO']來操作實現。
舉個列子比如你的網站的地址是 http://127.0.0.1/show_new.php/look-id-1.shtml
echo $_SERVER['PATH_INFO']
出來的結果就會是
/look-id-1.shtml
看到這個我想大家可能已經明白了。完整的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>"; //關閉資源 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.根據配置.htaccess來實現。
Apache的mod_rewrite是比較強大的,在進行網站建設時,可以通過這個模塊來實現偽靜態。
主要步驟如下:
1.檢測Apache是否開啟mod_rewrite功能
可以通過php提供的phpinfo()函數查看環境配置,找到“Loaded Modules”,其中列出了所有apache2handler已經開啟的模塊,如果里面包括“mod_rewrite”,則已經支持,不再需要繼續設置。如果沒有開啟“mod_rewrite”,則打開目錄 apache目錄下的“/apache/conf/” ,找到 httpd.conf 文件,再找到“LoadModule rewrite_module”,將前面的”#”號刪除即表示取用該功能。 如果沒有查找到“LoadModule” 區域,可以在最后一行加入
“LoadModule rewrite_module ,modules/mod_rewrite.so”
(獨占一行),之后重啟apache服務器。再通過phpinfo()函數查看環境配置就有“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規則學習
在新建.htaccess文件之后,就在里面寫入以下內容: RewriteEngine on #rewriteengine為重寫引擎開關on為開啟off為關閉 RewriteRule ([0-9]{1,})$index.php?id=$1 在這里,RewriteRule是重寫規則,是用正則表達式的句子,([0-9]{1,})表示由數字組成的,$表示結束標志,表示以數字結束!如果要實現偽靜態頁面,
規則如下:
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$是規則,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
關于PHP中實現網址偽靜態的方法有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。