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
相關學習推薦:php編程(視頻)
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 "<h1>新聞列表</h1>";
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怎样实现网址伪静态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php如何实现下载文件
- 下一篇: php如何关闭deprecated