PHP 送 301 / 302 轉址的 Header

以往 301 我都是設在 Apache 裡面,如下:

RewriteRule ^news$  http://example.com/news/ [R=301,NE,L]

想要在 PHP 送 301 / 302 Redirect 的 Header 要如何寫?

HTTP 定義 301 / 302 的 Header 意義:

  • 301: 永久轉址 (Permanently Moved)
  • 302: 臨時轉址 (Temporarily Moved)

PHP 送 301 / 302 轉址的 Header

PHP 301 Redirect (永久轉址)的寫法

  1. vim 301.php
    <?php
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://example.com");
    ?>
  2. $ curl -I http://localhost/301.php # 測試
    HTTP/1.1 301 Moved Permanently
    Date: Fri, 20 Sep 2015 07:15:19 GMT
    Server: Apache/2.4.10
    Location: http://example.com/
    Content-Type: text/html; charset=UTF-8

PHP 302 Redirect 寫法

  1. vim 302.php
    <?php
    header("Location: http://example.com");
    ?>
  2. $ curl -I http://localhost/302.php # 測試
    HTTP/1.1 302 Found
    Date: Fri, 20 Sep 2015 07:15:37 GMT
    Server: Apache/2.4.10
    Location: http://example.com/
    Content-Type: text/html; charset=UTF-8

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈PHP 送 301 / 302 轉址的 Header〉中有 5 則留言

  1. 您好,想向您請教..
    我的網站想要去掉前面的WWW,於是我在.htaccess用了這樣的語句,
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^AA\.net$ [NC]
    RewriteRule ^(.*)$ http://AA.net/BB$1 [L,R=301]
    先前也有試過
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.AA\.net$ [NC]
    RewriteRule ^(.*)$ http://AA.net/BB/$1 [R=301,L]
    試過網路上搜尋到的很多方法,但都沒辦法把WWW去掉..
    如果我輸入aa.net會連到aa.net/bb,輸入www.aa.net會連到aa.net/bb,
    但是如果我是輸入到更下一層如www.aa.net/bb/cc,則會照樣連到www.aa.net/bb/cc,
    甚到從www.aa.net/bb/cc裡點擊任何連結所連到的都會有有帶WWW的..
    請問我正確該如何作才能完全讓所有的WWW頁面都去掉WWW呢?
    感謝您..

  2. 您好,感謝您的回覆..
    我照您指導的輸入這些..
    RewriteEngine On
    RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
    [R=301,L]是我加上去的..
    但是經過測試還是一樣呢..
    我的電郵就是我的網站..有空的話還請您幫我看一下..
    感謝您..

  3. 您好,
    真的很感謝您回覆我的問題,但是我真的搞不定它,而且我很希望能處理好這個問題..
    基於尊重專業的原則下,我願意在我能力所能及的範圍內支付一點點心意,請您幫我處理好轉址這個問題,如果可以的話,請您用電郵和我聯絡,我不是來亂的,也感謝您沒有嫌我嘍唆,謝謝您..

二毛 發表迴響取消回覆

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料