1. 程式人生 > >(四)重定向的標誌 RewriteRule R C L NE NC G QSA 語法說明

(四)重定向的標誌 RewriteRule R C L NE NC G QSA 語法說明

RewriteRule 模式匹配 替換的URL [flags]

  • 模式匹配支援Perl格式的正則表示式,和rewrite的變數
  • 替換的URL支援模式匹配的結果和rewrite變數
  • 多個flag用逗號隔開[R=302,c]

RewriteRule R flag 說明

  • 強制外部重定向,後面可以加301或302跳轉,不加預設302
  • 301永久重定向 對於搜尋引擎 seo評分 舊的地址會給到新的地址
  • 302臨時重定向 新的地址新的seo評分
  • 所以我們一般使用301

教程部分

  測試環境配好 不會改的看前面教程

     AllowOverride All
    #RewriteEngine On
    #RewriteRule ^(.*)\.html& $1.php
     LogLevel alert rewrite:trace8

修改根目錄下.htaccess的檔案 建立方法前面也有教程

RewriteEngine on
RewriteRule ^(.*)\.html$ /$1.php [R=301]

細心的朋友可能會發現 rule 正則 替換內容  這裡多了一個/  

使用R  flag的時候 要記得加/

RewriteRule C flag 說明

連結下一規則 (必須保證第一條規則匹配 才能進入下一條的規則匹配)

RewriteEngine on
#RewriteRule ^(.*)\.html$ /$1.php [R=301]
RewriteRule ^/?(.*)\.htm$  /$1.html [C]
RewriteRule ^/?(.*)\.html$ /$1.php

與下一條規則成為一個整體,如果這一條不匹配,下一條也不進入了

就是直接訪問 1.html的時候不會生效   訪問1.htm的時候可以訪問到1.php 

RewriteRule L flag 說明

結尾規則,立即停止重寫操作,並不在應用其他重寫規則

RewriteEngine on
RewriteRule ^(.*) first.php?url=$1 [L]
RewriteRule ^(.*) second.php?url=$1

RewriteRule NE flag 說明

不對URL中的特殊字元進行hexcode轉碼

位址列上預設的#會轉換成%23

修改後

RewriteEngine on
RewriteRule ^(.*)\.html /index.html#$1 [R,NE]

#號將不做變換

RewriteRule NC flag 說明

不區分大小寫

RewriteEngine on
RewriteRule ^test/(.*)\.htm /tmp/$1.htm [NC]

此刻就算訪問Test也可以定向到tmp

RewriteRule G flag 說明

請求的網頁已經失效了(GONE)

Apache 會返回410錯誤

RewriteEngine on
RewriteRule ^test/.*$ - [G]

RewriteRule QSA flag 說明

用於在URL中擷取查詢字串

RewriteEngine on
RewriteRule ^per/(.*)$ /per.php?url=$1 [R,QSA]

解釋 訪問pre/index.php?name=xiaoming   會跳轉到per.php?url=index.php?name=xiaoming 

之前鄙人不才寫了個 從任意介面跳轉登入後 再返回任意介面的php程式碼 

https://blog.csdn.net/mp624183768/article/details/85068962