1. 程式人生 > >設定Apache伺服器的重定向

設定Apache伺服器的重定向

1.什麼是重定向?

通過各種方法將各種網路請求重新定個方向,轉到其他地方(分為內部和外部, 內部是看不到的,外部url會變化)

這是官方的介紹,用自己的話來說, 重定向就是把網路請求到另一個地方, 本來你是想去西安的,重定向把你送到雅安去了。就是這麼一個意識

2.重定向有什麼作用呢?

在說有什麼作用,我們談談什麼時候會用到重定向?

  • 比如現在你的網站結構要進行調整,以前訪問 music.jack.net就可以訪問到,現在訪問不到, 用重定向就可以繼續訪問。

  • 用ThinkPHP框架的小夥伴都知道,我們會有一個.htaccess檔案,這個檔案就是配置重定向規則. 讓你在訪問yuns.com就像在訪yuns.com/index.php, 這裡你就不用輸入index.php也可以訪問到. 如果你刪除了.htaccess檔案,你再輸入yuns.com, Apache會返回找不到訪問的檔案

上面兩個舉例就是重定向的運用, 這裡我們可以得出重定向的作用就是可以把網路請求的地址轉到其他的地方去, 而這種轉向可以在內部,使用者是看不到的,也可以在外部,讓使用者看到。比如你的網址換了,就可以使用外部重定向,使用者在收藏地址的時候,就收藏新的網址

3.實現重定向

實現重定向有三種方法

  1. 建立.htaccess檔案
    在你的專案檔案中建立一個.htaccess檔案, 在windows作業系統中,不可以直接新建一個【.】開頭的檔案,我們可以在命令列模式下建立

    進入命令列模式後,切換到你要建立.htaccess檔案的目錄下,
    這裡我切換到:  
    d: \wamp\www\
    接下來輸入:
    echo 1>.htaccess
    //檔案就建立成功了
    

    我們開啟.htaccess檔案, 在檔案中編寫如下內容

    RewriteEngine On    #開始重寫
    RewriteRule ^(.*)\$  test.html  #重寫規則(規則是一個正則表示式)
    
    #這裡的配置是一個舉例,你可以根據你的專案來配置
    

    在地址中輸入你的專案地址, 然後伺服器就會定向到你配置的地址中去

  2. 在Apache的httpd.conf配置
    在配置中找到AllowOverride None,在它的下面新增重定向規則,這裡要書寫正確, 如果寫錯了,Apache重啟將會失敗.

AllowOverride None  #這裡我們不用重寫許可權,可以關閉
RewriteEngine On    #開始重寫
RewriteRule ^(.*)\.html$ test.html #重寫規則

3.用PHP中進行重定向
介於PHP簡單,這裡我們用PHP來實現重定向, 用PHP重定向位址列中的url會變化, 而上面兩種方法是不會的。這看你的專案是用外部還是內部重定向

<?php
header('Location:test.html'); //重定向你要訪問的資源

4.配置Apache

大家如果在使用PHP的整合環境, 有的整合環境把Apache常用到的配置都配置好了,無需修改,但是自己的專案放在網上,配置是自己去配置的. 在使用重定向的時候,要配置Apache的配置檔案httpd.conf,

1 . 修改AllowOverride none 改為AllowOverride alll,這樣就可以指明Apache伺服器是否去找.htacess檔案作為配置檔案

2 .去掉LoadModule rewrite_module modules/mod_rewrite.so前的”#”

這樣修改過後, 你配置的.htaccess檔案就有效了

5.htaccess檔案的工作原理

.htaccess檔案提供了針對每個目錄改變配置的方法,比如在一個目錄放置了一個.htaccess檔案,那麼它的指令是作用於此目錄以及此目錄所有的子目錄

用了.htaccess檔案後效能會有所下降,開啟後訪頁面, 要查詢所有上級的目錄中的.htaccess檔案,建議專案上線後把重定向規則放在httpd.conf中.