一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

PHP網(wǎng)址重定向,URL重寫教程

 quasiceo 2014-05-25

PHP網(wǎng)址重定向,URL重寫教程  

2013-03-18 10:57:14|  分類: php |舉報(bào) |字號(hào) 訂閱

(我現(xiàn)在就想開啟和配置:
在conf目錄的httpd.conf文件中找到
LoadModule rewrite_module modules/mod_rewrite.so
將這一行前面的#去掉。
2.在要支持url rewirte的目錄啟用 AllowOverride All,通常是<Directory '/var/www/html>這個(gè)主目錄下面的AllowOverride,修改這一個(gè)就OK
3.在虛擬主機(jī)中開啟,如下
<VirtualHost phpbook.com:80>
RewriteEngine On
rewriteOptions Inherit
    DocumentRoot /var/www/html/PHPbook/
    ServerName phpbook.com
</VirtualHost>
4.在 /var/www/html/PHPbook/下某個(gè)目錄書寫你的.htaccess
OK完成)

學(xué)習(xí)目標(biāo)
1.了解.htaccess常用指令
2.實(shí)現(xiàn)網(wǎng)站統(tǒng)一入口

在實(shí)現(xiàn)PHP網(wǎng)址重定向的功能之前,必須確保http.conf中已經(jīng)加載了mod_rewrite模塊;
為了能靈活地控制重定向效果,下面開始了解.htaccess幾個(gè)常用的指令。
rewriteBase指令的功能:指定一個(gè)新目錄作為重寫規(guī)則的根目錄。有點(diǎn)抽象,下面我們做一個(gè)例子了解它的具體功能。

準(zhǔn)備工作:

1. 在根目錄(域名為)下建立.htaccess文件
rewriteEngine On
rewriteBase /article
rewriteRule ^news_sport1\.html$ news.php?id=1
2.在根目錄下建立news.php文件,內(nèi)容如下
<!--?php
    echo empty($_GET)?'root':'root';
-->
3.在根目錄下建立文件夾article,然后在article文件夾里建站news.php,內(nèi)容為
<!--?php
    echo empty($_GET)?'article':'article';
-->
目的:如果我們?cè)跒g覽器輸入域名http:///news_sport1.html,會(huì)輸出什么呢?
PHP網(wǎng)址重定向,URL重寫教程 - 頹廢熊 - 破壞的筆記
 
答案是article
下面我們修改.htaccess的內(nèi)容,在rewriteBase前面加上’#’符號(hào),將它注釋掉,看看這一次輸出什么內(nèi)容?
PHP網(wǎng)址重定向,URL重寫教程 - 頹廢熊 - 破壞的筆記
 
這一次輸出的是root,現(xiàn)在相信你對(duì)rewriteBase這一指令的功能已經(jīng)有了大概的了解了吧。當(dāng)我們啟用rewriteBase命令時(shí),那么符合rewriteRule的網(wǎng)站將被跳轉(zhuǎn)到相應(yīng)的目錄下。
rewriteRule指令的簡(jiǎn)單學(xué)習(xí)(知識(shí)準(zhǔn)備:正則表達(dá)式)
rewriteRule的格式為:rewriteRule 網(wǎng)址1 網(wǎng)址2
這樣符合網(wǎng)址格式1的地址就會(huì)被重定向到網(wǎng)址2
下面對(duì)rewriteRule進(jìn)行修改,將rewriteRule ^news_sport1\.html$ news.php?id=1改為
rewriteRule ^news_sport([\d]+)\.html$ news.php?id=$1
修改news.php的內(nèi)容為

<!--?php
    echo empty($_GET)?'root':$_GET['id'];
-->
實(shí)驗(yàn)效果
PHP網(wǎng)址重定向,URL重寫教程 - 頹廢熊 - 破壞的筆記
 
可以看到當(dāng)我們輸入news_sport1.html時(shí),$_GET[‘id’]為1,輸入news_sport2.html時(shí),$_GET[‘id’]為2
如果我們將rewriteRule 修改為 ^.*$ news.php會(huì)有什么效果呢?
PHP網(wǎng)址重定向,URL重寫教程 - 頹廢熊 - 破壞的筆記
 
可以看到無論我們?cè)跒g覽器地址欄輸入域名加地址,不管事實(shí)上這個(gè)地址存不存在,都會(huì)跳轉(zhuǎn)到news.php這個(gè)文件。這樣就實(shí)現(xiàn)了網(wǎng)站統(tǒng)一入口的功能

多參數(shù)的接收


學(xué)習(xí)目標(biāo):從靜態(tài)網(wǎng)址中提取參數(shù)
在前一篇文章中我們已經(jīng)了解了PHP網(wǎng)址重定向的一些基礎(chǔ)知識(shí),這一次我們將學(xué)習(xí)一些更為復(fù)雜的URL重寫規(guī)則。
打開百度新聞,然后查看幾篇新聞的網(wǎng)址,可以看到這些新聞的網(wǎng)址都是靜態(tài)的網(wǎng)址。

如何實(shí)現(xiàn)這樣的效果呢?下面我們來進(jìn)行一個(gè)簡(jiǎn)單的小案例
網(wǎng)址http:///system/2012/10/22/014.html,我們假設(shè)每一個(gè)正斜杠就是一個(gè)請(qǐng)求的參數(shù),比如system為請(qǐng)求目錄,2012/10/22分別為請(qǐng)求的年/月/日,014為文章的ID,我們將在目標(biāo)網(wǎng)頁(yè)中分別提取這些參數(shù)
1.創(chuàng)建.htaccess文件并書寫rewriteRule規(guī)則
rewriteEngine On
rewriteRule ^([a-zA-Z]+)/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)\.html$ /news.php?category=$1&year=$2&month=$3&day=$4&id=$5
2.新建news.php文件

<?php
    if(empty($_GET)){
        echo "empty";
    }else{
        foreach($_GET as $key=>$value){
            echo $key.':'.$value.'<br/>';
        }
    }
?>
3.在瀏覽器網(wǎng)地址中輸入http:///system/2012/10/22/014.html,結(jié)果如下
PHP網(wǎng)址重定向,URL重寫教程 - 頹廢熊 - 破壞的筆記
 
下面我們分析這一解析過程
PHP網(wǎng)址重定向,URL重寫教程 - 頹廢熊 - 破壞的筆記
 

綜合示例

經(jīng)過前面兩篇文章的學(xué)習(xí),我們對(duì)URL重寫已經(jīng)有了一定的了解,這一篇文章我們將通過一個(gè)綜合例子來應(yīng)用重寫知識(shí)。
效果簡(jiǎn)述(我想實(shí)現(xiàn)以下功能):
1.當(dāng)我在瀏覽器中輸入catalog.html時(shí),我實(shí)際想進(jìn)入的頁(yè)面是catalog.php這個(gè)分類頁(yè)面
2.當(dāng)我點(diǎn)擊catalog.html下面某個(gè)產(chǎn)品的鏈接,比如product/apache/1.html時(shí),我實(shí)際上是希望跳轉(zhuǎn)到product.php?category=apache?id=1,將apache作為目錄參數(shù),1作為商品id號(hào)傳遞給商品信息頁(yè)
3.我建立了product.php這個(gè)商品頁(yè)面,它會(huì)根據(jù)傳遞過來的category和id從數(shù)據(jù)庫(kù)中提取出相應(yīng)的商品信息,并進(jìn)行顯示。

下面將具體實(shí)現(xiàn)這些功能
1.建立.htaccess文件
rewriteEngine On
rewriteRule ^catalog\.html$ /catalog.php [L]
rewriteRule ^product/([a-zA-z0-9]+)/([0-9]+)\.html$ /product.php?category=$1&id=$2
2.建立catalog.php文件

<?php
    echo '<ul>';
    echo '<li><a href="product/apache/1.html">this is apache1</a></li>';
    echo '<li><a href="product/php/2.html">here is php2</a></li>';
    echo '</ul>';
?>
3.在瀏覽器中輸出http:///catalog.html,結(jié)果如下
PHP網(wǎng)址重定向,URL重寫教程 - 頹廢熊 - 破壞的筆記
 
4.建立product.php頁(yè)面(為了簡(jiǎn)單,這里我只是顯示參數(shù))

<?php
    if(empty($_GET)){
        echo "empty";
    }else{
        foreach($_GET as $key=>$value){
            echo $key.':'.$value.'<br/>';
        }
    }
?>
5.點(diǎn)擊上面兩個(gè)鏈接,可以看到效果如下
PHP網(wǎng)址重定向,URL重寫教程 - 頹廢熊 - 破壞的筆記
 
實(shí)驗(yàn)到這里就已經(jīng)完成了我們的目標(biāo)了,但是否還有需要改進(jìn)的地方呢?

對(duì)于商品信息鏈接,我們是直接采用手寫靜態(tài)鏈接地址的方式添加上的,但是在實(shí)際應(yīng)用中。這個(gè)網(wǎng)址信息通常是從數(shù)據(jù)庫(kù)中提取出相應(yīng)的參數(shù),然后再生成靜態(tài)網(wǎng)址的。下面我們就看看如何實(shí)現(xiàn)這個(gè)功能。
結(jié)合第3課的代碼2分析
2.建立catalog.php文件

<?php
    echo '<ul>';
    echo '<li><a href="product/apache/1.html">this is apache1</a></li>';
    echo '<li><a href="product/php/2.html">here is php2</a></li>';
    echo '</ul>';
?>


實(shí)際上我們更希望的代碼最好是這樣

<?php
    echo '<ul>';
    echo '<li><a href="'.make_url('apache',1).'">this is apache1</a></li>';
    echo '<li><a href="'.make_url('php',2).'">here is php2</a></li>';
    echo '</ul>';
make_url('apache',1);
    function make_url($category,$id){
        return 'product/'.$category.'/'.$id.'.html';
    }
?>
是不是實(shí)現(xiàn)了我們的效果了呢…

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    丰满人妻熟妇乱又伦精另类视频 | 亚洲中文字幕综合网在线| 国产成人精品国产成人亚洲| 国产av大片一区二区三区| 国产精品日本女优在线观看| 激情五月综五月综合网| 九九热最新视频免费观看| 国产精品美女午夜福利| 狠狠做五月深爱婷婷综合| 精品一区二区三区免费看| 不卡中文字幕在线视频| 国产成人精品资源在线观看| 在线中文字幕亚洲欧美一区| 精品推荐久久久国产av| 中文字幕人妻综合一区二区| 大伊香蕉一区二区三区| 亚洲精品成人午夜久久| 亚洲中文字幕视频在线观看| 日韩一区欧美二区国产| 日韩性生活视频免费在线观看| 深夜视频在线观看免费你懂| 欧美日韩亚洲巨色人妻| 日本午夜免费福利视频 | 少妇高潮呻吟浪语91| 国产精品不卡高清在线观看| 久草国产精品一区二区| 久久国产精品熟女一区二区三区| 欧美精品久久一二三区| 深夜视频在线观看免费你懂| 东京干男人都知道的天堂| 国产精品不卡免费视频| 国产精品一区二区高潮| 亚洲中文在线中文字幕91| 无套内射美女视频免费在线观看| 欧美日本精品视频在线观看| 免费大片黄在线观看日本| 国产精品不卡免费视频| 亚洲女同一区二区另类| 国产成人精品一区二区三区| 久久久精品区二区三区| 97人妻精品一区二区三区免|