1. 程式人生 > >重定向和偽靜態在網站中的應用

重定向和偽靜態在網站中的應用

什麼是偽靜態和重定向

偽靜態是相對真靜態來講的。偽靜態只是改變了URL的表現形式,實際上還是動態頁面。偽靜態有了真靜態一樣的SEO。
重定向是通過各種方法將各種網路請求重新定個方式轉到其他位置。
HTTP標準協議中的3xx (主要是302,303)

Apache環境

#重定向模組linux平臺的配置安裝
LoadModule rewrite_module modules/mod_rewrite.so

重定向既可以在apche的主配置檔案中設定,也可以在.htaccess檔案中設定。
區別:修改.htaccess不需要重啟apache。
注意:使用.htaccess檔案,需要給其設定許可權

#在apache主配置中
AllowOverride None
修改為:
AllowOverride All

重定向第一個例子

RewriteEngine On
RewriteRule ^(.*)\.htm$ $1.html
#訪問.htm檔案,會被替換成.html

重定向的原理和基本方法

1..htaccess的工作原理
.htaccess檔案(或者『分散式配置檔案』)提供了針對每個目錄改變配置的方法,即在一個特定的目錄中,放置一個包含指令的檔案,其中的指令用於此目錄及其所有子目錄。

2.Apache重定向原理
這裡寫圖片描述

基於Apache重定向基礎知識

1.mod_rewrite簡介
Apache的URL操作模組
包含:RewriteBase、RewriteRule、RewriteCond、RewriteMap

2.rewrite日誌功能
在做很多除錯或者排查錯誤的時候,最佳工具一定是它的日誌。
在這裡,如果你的重定向發生了錯誤(比如死迴圈),你就可以通過日誌來快速定位問題。

apache2.2版本的 RewriteLog RewriteLogLevel (0關閉 9dbug)
apache2.4以上版本的 LogLevel

LogLevel操作示範

#要求:只能在apache主配置檔案中,不能在.htaccess檔案裡配置
LogLevel alert rewrite:trace8
#日誌最後是記錄到apache_error.log檔案裡
#1-8,生產模式不要大於trace2(或者不記錄日誌)

3.RewritRule語法說明

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

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

4.RewriteRule R flag說明
強制外部重定向,後面可以加301或302跳轉,不加預設的302

RewriteRule ^/?(.*)\.html /src/$1.php [R=302]

5.RewriteRule C flag說明
連結下一規則

RewriteRule ^/?(.*)\.html /src/$1.htm [C]
RewriteRule ^/?(.*)\.html /src/$1.php

如果前一條規則不匹配,就不進入下一個規則驗證了。

6.RewriteRule L flag說明
結尾規則,一旦匹配就立即停止重寫操作,並不在應用其他重寫規則

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

7.RewriteRule NE flag說明
不對URL中的特殊字元進行hexcode轉碼

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

如果不寫 NE, #符號在位址列會被轉義為%23

RewriteRule ^(.*).htm /index.html#$1 [R]

8.RewriteRule NC flag說明
不區分大小寫

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

9.RewriteRule G flag說明
請求的網頁已經失效(Gone)

RewriteRule ^oldulr.*$ - [G]

Apache伺服器會返回410

10.RewriteRule QSA flag說明
用於在URI中擷取查詢字串

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

11.RewriteBase 語法說明
設定了目錄級重寫的基準URL

RewriteEngine On
RewriteBase /test
RewriteRule ^(.*)\.htm$ $1.html [R]

這樣訪問localhost/test.htm,就會跳轉到 /test/test.html

12.RewriteCond 語法說明
RewriteCond指令定義了一個規則的條,即在一個RewriteRule指令之前有一個或多個RewriteCond指令。

RewriteEngine on
RewriteCond $1 "test"
RewriteRule ^(.*)\.htm $1.html

滿足條件localhost/test.htm ,才能批到到 test.html

相關推薦

定向靜態網站應用

什麼是偽靜態和重定向 偽靜態是相對真靜態來講的。偽靜態只是改變了URL的表現形式,實際上還是動態頁面。偽靜態有了真靜態一樣的SEO。 重定向是通過各種方法將各種網路請求重新定個方式轉到其他位置。 HTTP標準協議中的3xx (主要是302,303)

靜態網站如何做301定向?

 301重定向百度搜索一下會出來很多內容,但是搜尋出來的內容往往不是很全面,大多講的都是靜態301重定向的方法。那如果是靜態網站或者說是偽靜態的網站如何做301的重定向設定呢?整理之後,下面給大家一一做一個介紹(下面的方法都是傳遞百度權重的哦): 1、在.htaccess檔

javaweb定向請求轉發(response.sendRedirect()request.getRequestDispatcher(rul).forward(request,response)))的區別

客戶端 不起作用 這也 方法 cnblogs rect() 獲取url rec alt 先來兩張圖,方便理解: 可以看出,重定向時,是服務器向遊覽器重新發送了一個response命令,讓遊覽器再次向url2發送請求,以獲取url2的資源 而請求轉發時,類似於是服務器自己

Servlet的request對象、定向轉發的差別(6)

current https 命令 相對 eba 進入 file before redirect 1.這裏所說的request對象指的是HttpServletRequest對象,它代表client的請求,當client通過HTTP協議訪問server時。HTTP請求頭

HTTP定向請求轉發的區別

response 傳輸 觀察 web應用 ali jpg 處理 size 什麽 一、調用方式 我們知道,在servlet中調用轉發、重定向的語句如下:request.getRequestDispatcher("new.jsp").forward(request, resp

springMVC定向請求轉發的使用

請求轉發 controller 方法提供了一個 String 型別返回值之後, 它需要在返回值裡使用:forward: 使用說明: @RequestMapping("/forward") public String forward(){ // 通過forward關鍵字實現轉發

Java基礎之Java Web 什麼是定向轉發?如何選擇使用定向還是轉發?

1.重定向和轉發的區別是什麼? 重定向是兩次請求,轉發是一次請求,因此轉發的速度要快於重定向。 重定向之後位址列上的地址會發生變化,變化成第二次請求的地址,轉發之後位址列上的地址不會變化,還是第一次請求的地址。 重點:重定向和請求轉發之後的程式碼都會執行,直到方法結束或者遇到

Web開發的請求定向內部轉發的區別

一、呼叫方式 我們知道,在servlet中呼叫轉發、重定向的語句如下: request.getRequestDispatcher("new.jsp").forward(request, response);   //轉發到new.jsp response.sen

jsp/servlet定向轉發的區別

轉自:http://cantellow.javaeye.com/blog/372941 關於兩者的區別我就不用多說了,一搜一大堆,大概就是: 重定向是客戶端跳轉,轉發是伺服器端跳轉 在servlet中呼叫轉發、重定向的語句如下: request.getRequestDispatcher("new.jsp"

servlet請求post提交表單定向到跨域網站問題

statuscode為302 是作為HTTP1.0的標準,以前叫做Moved Temporarily ,現在叫Found. 現在使用只是為了相容性的處理,response.sendRedirect()的預設Location重定向用的是302.  但是HTTP 1.1 有303 和307作為詳細的補充,其實是對

servlet定向請求轉發

重定向 重定向即重新定位方向,它的引數是跳轉的位置 response.sendRedirect("xxx.html"); 請求轉發 引數也是跳轉的位置 request.getRequestDispatcher("xxx.html").forward(request,re

SpringMVCcontroller間跳轉、定向傳參

1. 需求背景     需求:spring MVC框架controller間跳轉,需重定向。有幾種情況:不帶引數跳轉,帶引數拼接url形式跳轉,帶引數不拼接引數跳轉,頁面也能顯示。 2. 解決辦法     (1)我在後臺一個controller跳轉到另一個controller,為什麼有這種需求呢,是這樣的。

web解決亂碼問題&&定向請求轉發區別

String ss = "珍珍"; String s8 = URLEncoder.encode(ss, "utf-8"); String so = URLDecoder.

Http定向轉發

    在專案開發中,經常會用到轉發和重定向,它們雖然都是轉向,但是二者卻有著本質的區別。而且,該開始接觸的時候,也不清楚到底什麼時候用轉發,什麼時候用重定向。那到底它們有什麼區別呢?又該怎麼用呢?下面就一起看看吧。 表面區別 轉發     轉發是用RequestDi

【Servlet】深入淺出Java定向請求轉發

列表 url地址 ssi 什麽 stack led 要去 處理 代碼 import java.text.*; import java.util.*; import java.io.*; import javax.servlet.http.*; i

定向別名

router pat new dex 組件 outer path out 定向 new router({   routes:[     {       path: ‘/‘,       conponent: home,       name: ‘Home‘,       a

請求定向請求轉發的關系

cti 愛好 ima 重定向 3-9 req 應該 用戶名 action 測試response.sendRedirect方法 先將index.jsp中的action頁面修改成為response.jsp 然後再response.jsp頁面中執行response.sendR

Nginx 之四: Nginx服務器的rewrite、全局變量、定向防盜鏈相關功能

war int 服務器驗證 %u 寫日誌 防盜鏈 循環 版本 算法 一:Nginx 後端服務器組的配置: 1、upstream: 用於設置後端服務器組的主要指令,upstream類似於之前的server塊或http塊,用法如下: upstreame Myserve

第五章 linux定向管道

控制 windows 空白 設備 example 替換 刪除fstab num 研究 重定向和管道 標準輸入和輸出: 程序:指令+數據 讀入數據:Input 輸出數據:Output 打開的文件都有一個fd: file descriptor (文件描述符) Linux給程序提

靜態靜態的區別

靜態 流量 數據庫 發布 體驗 ecms 調用 word url 首先肯定的是純靜態和偽靜態都是SEO的產物,但純靜態和偽靜態還是有很大區別的。 純靜態是生成真實的HTML頁面保存到服務器端,用戶訪問時直接訪問這 個HTML頁面即可,從而大大的減輕了服務器壓力(如ded