52AV手機A片王|52AV.ONE

標題: [SEO] ReWrite 設定讓 URL 動態樣式變靜態樣式(長變短) [打印本頁]

作者: IT_man    時間: 2014-12-23 17:59
標題: [SEO] ReWrite 設定讓 URL 動態樣式變靜態樣式(長變短)
本帖最後由 IT_man 於 2014-12-24 18:42 編輯 6 ~  G' x8 q, ]4 r9 c

4 Z% \+ X- G9 |: r9 h9 L) q, z【前言】由於敝網站的需要,主要是為了SEO(search engine optimize) in discuz x3.2 的後台->全局->SEO設置->URL靜態化(設定教學),google了一些資料,如下:& C) s6 s7 C# Z( b
【介紹】6 J( L( U9 D0 ]$ o
URL Rewrite(URL重導向)是一種REST (Representational State Transfer,表徵狀態轉移)的相關技術,它可以在 Web Server 中,針對使用者所提供的 URL 進行轉換後,再傳入 Web Server 中的程式處理器。
/ k" j# y: `% B/ u% Y使用者可以使用較直覺的方式來輸入 URL(這也是 REST 的主要目的),是搜尋引擎最佳化(SEO)的作法之一。而應用程式開發者可以利用這個機制來將參數隱藏起來,可避免讓網路上的惡意使用者收集到有利於發動攻擊的資訊。
( |' I* _! [' o) W; f, ?
【整理】. n  F4 b2 ?- O! ]0 W
使用ReWrite 設定,很方便地可將原本是『
http://www.av4u.info/forum.php?mod=viewthread&tid=192&extra=page%3D1』樣式的動態URL,變成『http://www.av4u.info/thread-192-1-1.html』形式的 '靜態URL。$ \6 u$ [6 d* d' p3 K) @4 O
ReWrite是以正規表示式來表達,關於正規表示式的語法請參考。
4 b9 b; G, q% r- U& B& n使用 ReWrite 的好處有二:

6 r3 Y1 @* ^0 Z" NI.讓 URL 看起來比較短,不帶參數的 '靜態URL' 形式對使用者來說比較習慣;. J6 L. g0 z: D# f! w6 f# m" k1 l
II.有利於 SEO,搜尋引擎比較好抓。
. [) C( e( P, F9 x3 X1 P( Z& O【Rewrite語法】
" T7 F- X$ J& p先以例子1說明:
  1. RewriteEngine on6 y% K$ R1 t! F( J+ @
  2. RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5.0.*$ m: H, J3 j/ D6 ~" v3 a* x9 }
  3. RewriteRule index.php index.m.php6 P" [! `: U  c' q, c; e" g
  4. RewriteCond %{HTTP_USER_AGENT} ^Lynx.*
    : M' {8 v# v8 D/ B2 }
  5. RewriteRule index.php index.L.php
    3 G4 H- N  {  l
  6. RewriteRule index.php index.b.php  U0 A, V# @) y4 |8 E$ c# U2 w
複製代碼
語意等同於:
: G" k/ S1 e* G0 e' e
  1. if($_SERVER['HTTP_USER_AGENT'] == 'Mozilla/5.0′) //FireFox瀏覽器
    . @$ T8 ]% i& y) ~" t* l
  2. {
    / @7 u4 d$ s3 b# J5 m' k9 L
  3. //轉向到index.m.php
    / b* C* B+ k8 L  d" m7 J1 ^6 i
  4. }
    ( s( W$ @" Q! p) s
  5. else if($_SERVER['HTTP_USER_AGENT'] == 'Lynx') //移動設備的瀏覽器
    5 J& u$ {9 F" R- R! g8 ]
  6. {
    : k! v9 N9 _3 v( k: f/ A& i
  7. //轉向到index.L.php9 s; F- @" @9 S' H' `
  8. }
    ) k) h( H8 D* e& |! q+ S- {$ Z
  9. else  //其他版本的瀏覽器( A6 ~; G( }7 B. X& x: C
  10. //轉向到index.b.php
複製代碼
例子2.' w4 I+ C' N8 Q7 j9 L$ W
  1. RewriteCond %{REMOTE_HOST} ^host1.* [OR]% \! b  `4 j$ d1 ]) F) z
  2. RewriteCond %{REMOTE_HOST} ^host2.* [OR]
    : }& r- o. C. p* D
  3. RewriteCond %{REMOTE_HOST} ^host3.*
    ! C' G6 R, B& j5 W, J8 H5 S2 N
  4. RewriteRule (.*)$ test.php
複製代碼
如果地址是host1或host2或host3的時候,就轉跳到對test.php。' O4 ^- `* i5 R. `( }
從這裡可以看出,RewriteCond語句之間內定邏輯是AND,如果想要OR,則要明確的寫出來。
  {5 [# C( k" H/ c以下介紹ReWrite語法:
& M  Q  y0 \$ c$ ^* C0 K. G
RewriteCond TestString CondPattern [Flags]: t9 E) t% I3 ]3 [& T- `
TestString  是指一個URL格式的條件,例子中用的是環境變數名稱HTTP_HOST所包含的內容(Name= Value),這是一個map(鍵值對)格式的資料類型。
1 v. N  H  z8 T& x, _CondPattern 是條件參數,以第二個例子為例,就是
host1.*
6 C6 ^+ l! U9 X3 X, V7 @Flags       標識是第三個參數,可以用來緊跟下一個條件,這兒用OR表示或者,如果沒有[Flags],則用隱含的AND,表示
並且」。( {' C6 g/ D3 i/ J( u2 c" y
其它的還可以
NC」等等,表示忽略大小寫RewriteCond就像我們程式中的if語句一樣,表示如果符合某個或某幾個條件則執行RewriteCond下面緊鄰的RewriteRule語句,這就是RewriteCond最原始、基礎的功能0 {* D  {) Q( }
7 z" V! C5 `) y. M# k2 ~" ?& ?$ a
Flags 還有更多用法:7 }/ ^! U7 X$ X2 e
I (ignore case)不管大小寫強行指定字串匹配,這個FLAG影響RewriteRule指令和相應的RewriteCond 指令% a% R% ~' a+ Z9 k, w
F (Forbidden) 對客戶端做反應,停止REWRITING程序並且送出403錯誤,注意在這種情況下FORMATSTRING 是無用的並可以設置為任何非空字串。7 C0 y, s" o3 j: |* x! }! A
L (last rule) 不應用任何重寫規則
在此停止重寫程序,使用這個FLAG以阻止當前被重寫的URI被後面的規則再次重寫
* H2 I$ ]; _) T9 D9 WN (Next iteration) 強制REWRITINGENGINE調整規則目標並且從頭重啟規則檢查(所有修改將保存),重啟次數由RepeatLimit指定的值限制,如果這個數值超過N FLAG將被忽略) Q' `0 U) U/ w2 V8 B$ d( A
NS (Next iteration of the same rule) 以N標記工作不從相同的規則重啟規則程序(例如強制重複規則應用),透過RepeatLimit指令指定一個反複執行某一規則的最大數目,
" E" q5 ^8 X5 v- E7 ~6 i* k- XP (force proxy) 強制目的URI在內部強制為代理需求並且立即透過ISAPI擴展應付代理需求,必須確認代理字串是一個有效的URI包括協議主機等等否則代理將返回錯誤
) k: G4 w6 Q( o) e8 e5 B; KR (explicit redirect)強制服務器對客戶端發出重定向指示即時應答,提供目的URI的新地址,重定向規則經常是最後規則6 d4 s) R( J4 c# z" O/ k
RP (permanent redirect) 幾乎和[R]標記相同但是發布301HTTP狀態而不是302HTTP狀態代碼/ X1 ^  }- @0 `* q$ Y) G! M
U (Unmangle Log) 當URI是來源需求而不是重寫需求時記載URI% S. G" S7 ]2 n) N2 [6 T3 F
O (nOrmalize) 在實行之前標準化字串。標準化包括URL-ENCODING,不合法的字串的再移動等,這個標記對於URLS和URLS-ENDODED頭是有用的5 ?6 G8 h2 |7 F. p& X
CL (Case Lower) 小寫2 d9 }$ p& ^; d0 R
CU (Case Upper) 大寫
. f' T. p5 m* g% C7 x
重點來了,要如何設定才能實現上述的功能,以下是我的例子(.htaccess 及 apache的httpd.conf皆適用正規表示式):/ W, Q9 L( j1 a





歡迎光臨 52AV手機A片王|52AV.ONE (https://nhkie.com/) Powered by Discuz! X3.2