什么是重定向?
(推薦教程:apache)
通過各種方法將各種網(wǎng)絡(luò)請求重新定個方向,轉(zhuǎn)到其他地方(分為內(nèi)部和外部, 內(nèi)部是看不到的,外部url會變化)
這是官方的介紹,用自己的話來說, 重定向就是把網(wǎng)絡(luò)請求到另一個地方, 本來你是想去西安的,重定向把你送到雅安去了。就是這么一個意識
重定向有什么作用呢?
在說有什么作用,我們談?wù)勈裁磿r候會用到重定向?
比如現(xiàn)在你的網(wǎng)站結(jié)構(gòu)要進行調(diào)整,以前訪問 music.jack.net就可以訪問到,現(xiàn)在訪問不到, 用重定向就可以繼續(xù)訪問。
用ThinkPHP框架的小伙伴都知道,我們會有一個.htaccess文件,這個文件就是配置重定向規(guī)則. 讓你在訪問yuns.com就像在訪yuns.com/index.php, 這里你就不用輸入index.php也可以訪問到. 如果你刪除了.htaccess文件,你再輸入yuns.com, apache會返回找不到訪問的文件
上面兩個舉例就是重定向的運用, 這里我們可以得出重定向的作用就是可以把網(wǎng)絡(luò)請求的地址轉(zhuǎn)到其他的地方去, 而這種轉(zhuǎn)向可以在內(nèi)部,用戶是看不到的,也可以在外部,讓用戶看到。比如你的網(wǎng)址換了,就可以使用外部重定向,用戶在收藏地址的時候,就收藏新的網(wǎng)址
實現(xiàn)重定向
實現(xiàn)重定向有三種方法
創(chuàng)建.htaccess文件
在你的項目文件中創(chuàng)建一個.htaccess文件, 在windows操作系統(tǒng)中,不可以直接新建一個【.】開頭的文件,我們可以在命令行模式下創(chuàng)建
進入命令行模式后,切換到你要創(chuàng)建.htaccess文件的目錄下, 這里我切換到:?? d:?wampwww 接下來輸入: echo?1>.htaccess //文件就創(chuàng)建成功了
我們打開.htaccess文件, 在文件中編寫如下內(nèi)容
RewriteEngine?On????#開始重寫 RewriteRule?^(.*)$??test.html??#重寫規(guī)則(規(guī)則是一個正則表達式) #這里的配置是一個舉例,你可以根據(jù)你的項目來配置
在地址中輸入你的項目地址, 然后服務(wù)器就會定向到你配置的地址中去
在Apache的httpd.conf配置
在配置中找到AllowOverride None,在它的下面添加重定向規(guī)則,這里要書寫正確, 如果寫錯了,Apache重啟將會失敗
AllowOverride?None??#這里我們不用重寫權(quán)限,可以關(guān)閉 RewriteEngine?On????#開始重寫 RewriteRule?^(.*).html$??test.html???#重寫規(guī)則
用PHP中進行重定向
介于PHP簡單,這里我們用PHP來實現(xiàn)重定向, 用PHP重定向地址欄中的url會變化, 而上面兩種方法是不會的。這看你的項目是用外部還是內(nèi)部重定向
<?php header('Location:test.html'); //重定向你要訪問的資源
配置Apache
大家如果在使用PHP的集成環(huán)境, 有的集成環(huán)境把Apache常用到的配置都配置好了,無需修改,但是自己的項目放在網(wǎng)上,配置是自己去配置的. 在使用重定向的時候,要配置Apache的配置文件httpd.conf,
1、修改AllowOverride none?改為AllowOverride alll,這樣就可以指明Apache服務(wù)器是否去找.htacess文件作為配置文件
2、去掉LoadModule rewrite_module modules/mod_rewrite.so前的”#”
這樣修改過后, 你配置的.htaccess文件就有效了
htaccess文件的工作原理
.htaccess文件提供了針對每個目錄改變配置的方法,比如在一個目錄放置了一個.htaccess文件,那么它的指令是作用于此目錄以及此目錄所有的子目錄
用了.htaccess文件后性能會有所下降,開啟后訪頁面, 要查找所有上級的目錄中的.htaccess文件,建議項目上線后把重定向規(guī)則放在httpd.conf中。