php擬似静的

50489 ワード

ずっとphpの開発をしています.開発の過程で「偽静的」という言葉をとっくに聞いていた.しかし、それを理解することはできなかった.
今日やっとこの方面の内容をよく理解することを决めました.
まず、擬似静的とは:
擬似静的別名URL書き換えは、動的なURLが静的に見えるURLです.すなわち,動的ページはURLを書き換えることで動的ページを削除するパラメータを実現するが,実際のページディレクトリでは書き換えのあるページを実現する必要はない.
 
また2つの名詞解析を補足する
静的URL:filetype:htmでクエリーできる純粋な静的HTMLドキュメント
動的Webサイト:コンテンツはデータベースに保存され、必要に応じてコンテンツが表示され、URLには?#&次のような異なるパラメータを表示します.php?lang=cn&class=1&id=2
 
動的、静的、擬似静的間のメリットとデメリット(新しい)
動的Webサイト
まず、ダイナミックウェブサイトは現在、Googleにとって「捕まえられない」という言い方は間違っており、Googleはダイナミックウェブサイトをうまく処理し、順調に捕まえることができる.次に「パラメータは3つを超えてはいけない」という言い方も正しくなく、Googleはパラメータが3つを超えるダイナミックサイトをつかむことができますが、URLが長すぎるのを避けるためにはパラメータをできるだけ減らすべきです.
次に、ダイナミックウェブサイトには、上記のnewsという利点があります.php?lang=cn&class=1&id=2を例にとると、URLのパラメータはGoogleに正確に伝えられ、このURLコンテンツ言語はcnであり、分類1に属し、コンテンツIDは2であり、Googleのコンテンツの識別処理をより容易にする.
最後に、ダイナミックウェブサイトは、特にセッションID(sid)とクエリー(query)パラメータをできるだけ簡素化し、同じページを大量に作成しやすいようにします.
静的Webサイト
まず、静的ウェブサイトが有する絶対的な利点は、/product/nokia/n 95である.htmlと/about.htmlは分かりやすく、検索結果でクリック数が比較的高い可能性があります.
次に、静的ウェブサイトは必ずしも最高のウェブサイト形式ではない.上述の動的ウェブサイトでは、動的ウェブサイトはGoogleに識別可能なパラメータを教えることができるが、静的ウェブサイトはドキュメントの配置が適切でない場合(例えば、扁平化しすぎてHTMLドキュメントをルートディレクトリの下に置く)、その他の要素は、むしろ静的ウェブサイトがGoogleに提供する参考情報が豊富であると述べている.
最後に、楽思蜀はGoogleという文に隠された意味があると思いますか?「このタイプのWebサイトのページを更新するには、特に情報量が急速に増加する場合、コンパイルコードを変更する必要があるため、時間がかかります.」サイトといっても、Googleシステムでは同じような問題があるのではないでしょうか.
擬似静的Webサイト
まず、擬似静的サイトは動的サイトを「静的」にすることはできません.擬似静的は動的サイトの書き換えにすぎません.Googleは擬似静的がHTMLドキュメントだとは思いません.
次に,擬似静的は望ましいが,冗長パラメータの除去,仕様URLの除去,可能な限り重複ページの回避に重点を置くべきである.
最後に、擬似静的は大きな潜在的な危険があり、ウェブサイトシステム、ウェブサイト構造、コンテンツ分布、パラメータの意味に熟知している場合に使用することが望ましい.
擬似静的規則を書くときは、前の例のnewsのような価値のあるパラメータをすべて簡略化しないで、価値のあるパラメータを保持しなければならない.php?lang=cn&class=1&id=2はnews-cn-class 1-id 2に書き換えることが望ましい.htmlは、あまり単純にnews-2に書き換えるのではなく、html.
また、擬似静的には、セッションID(sid)やクエリー(query)パラメータ、/product.asp?sid=98971298178906&id=1234のようなダイナミックなウェブサイトを含めることはできません.sidはもともとGoogleが認識して遮蔽することができますが、/product/98971298178906/1234に書き換えると、Googleは認識できないだけでなく、局全体で無限の重複ページをもたらします.(セッションごとに新しいセッションIDが生成されます).
 
擬似静的か真静的かを選択すべきだ
1、真静と偽静を使うのはSEOにとって何の違いもない
2、真静を使用すると、ハードディスク(HDD)が破損し、フォーラムのパフォーマンスに影響を与える可能性がある
3、擬似静的使用は一定量のCPU占有率を占有し、大量使用はCPU過負荷を招く
4、最も重要な点は、SEOのために静的であることです.
したがって、
1、どのように生成しても、ハードディスク(HDD)にとっては傷つくので、静的な方法で直接排除できます.
2、真偽静的効果が同じである以上、偽静的を選択することができます.
3、しかし、擬似静的な大量使用はCPUに過負荷をもたらす.
4、だから私たちは大量に使わなければいいのです.
5、静态はSEOに见せるだけである以上、ユーザーに使う必要はありません.
6、だから私たちはSEOに専用に提供されたArchiverで擬似静的を使えばいいのです.
7、私の書いた文章を辛抱強く読んでくれてありがとう.
8、何か分からないところがあったり、違う見方があったりして、提出を歓迎します.
擬似静的および真の静的に関するコメント
本当の静的化と擬似静的には本質的な違いがある.ユーザが1つの純粋なhtmlと1つの呼び出し複数のデータを処理するためのphpは,CPUの使用率において明らかに前者が少ない.もともとある人はhtmlがハードディスクをダウンロードして読み書きするのが頻繁だと言って、彼はこのようにデータベースを読み取ってディスクを読み書きしないように言って、ましてキャッシュのばらばらなphpもハードディスクに置いて、これらの読み取りはディスクの操作を使わないのですか?可笑しい.
単一html+画像Flashなどの添付ファイルを読み込むだけで実現できる目的は、データベースを読むのに苦労したりphpキャッシュファイルを読むのに苦労したり、データ出力を再統合したり、画像Flashなどの添付ファイルを読むのに苦労したりするのではないでしょうか.CMSのトップページには多くのインタラクションは必要ありません.フォーラムのセットはここで使うべきではありません.逆に、もっと考えなければならないのは、美観です.互換性!メッセージの直感!パフォーマンス!安定もある!
 
php擬似静的実装の4つの方法を回転します.
 

  
    
1 <? php
2   //
3
4 // localhost/php100/test.php?id|1@action|2
5   $Php2Html_FileUrl = $_SERVER [ " REQUEST_URI " ];
6   echo $Php2Html_FileUrl . " <br> " ; // /php100/test.php?id|1@action|2
7   $Php2Html_UrlString = str_replace ( " ? " , "" , str_replace ( " / " , "" , strrchr ( strrchr ( $Php2Html_FileUrl , " / " ) , " ? " )));
8   echo $Php2Html_UrlString . " <br> " ; // id|1@action|2
9   $Php2Html_UrlQueryStrList = explode ( " @ " , $Php2Html_UrlString );
10   print_r ( $Php2Html_UrlQueryStrList ); // Array ( [0] => id|1 [1] => action|2 )
11   echo " <br> " ;
12   foreach ( $Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr )
13 {
14   $Php2Html_TmpArray = explode ( " | " , $Php2Html_UrlQueryStr );
15   print_r ( $Php2Html_TmpArray ); // Array ( [0] => id [1] => 1 ) ; Array ( [0] => action [1] => 2 )
16   echo " <br> " ;
17   $_GET [ $Php2Html_TmpArray [ 0 ]] = $Php2Html_TmpArray [ 1 ];
18 }
19   // echo ' :$_GET <br />';
20   print_r ( $_GET ); // Array ( [id|1@action|2] => [id] => 1 [action] => 2 )
21   echo " <br> " ;
22   echo " <hr> " ;
23   echo $_GET [id] . " <br> " ; // 1
24   echo $_GET [action]; // 2
25   ?>
26  

 

  
    
1 <? php
2   //
3
4 // localhost/php100/test.php/1/2
5   $filename = basename ( $_SERVER [ ' SCRIPT_NAME ' ]);
6   echo $_SERVER [ ' SCRIPT_NAME ' ] . " <br> " ; // /php100/test.php
7   echo $filename . " <br> " ; // test.php
8  
9   if ( strtolower ( $filename ) == ' test.php ' ){
10 if ( ! empty ( $_GET [id])){
11 $id = intval ( $_GET [id]);
12 echo $id . " <br> " ;
13 $action = intval ( $_GET [action]);
14 echo $action . " <br> " ;
15 } else {
16 $nav = $_SERVER [ ' REQUEST_URI ' ];
17 echo " 1: " . $nav . " <br> " ; // /php100/test.php/1/2
18   $script = $_SERVER [ ' SCRIPT_NAME ' ];
19 echo " 2: " . $script . " <br> " ; // /php100/test.php
20   $nav = ereg_replace ( " ^ $script " , "" , urldecode ( $nav ));
21 echo $nav . " <br> " ; // /1/2
22   $vars = explode ( " / " , $nav );
23 print_r ( $vars ); // Array ( [0] => [1] => 1 [2] => 2 )
24   echo " <br> " ;
25 $id = intval ( $vars [ 1 ]);
26 $action = intval ( $vars [ 2 ]);
27 }
28 echo $id . ' & ' . $action ;
29 }
30   ?>
31  

 

  
    
1 <? php
2 //
3
4
5 function mod_rewrite(){
6 global $_GET ;
7 $nav = $_SERVER [ " REQUEST_URI " ];
8 echo $nav . " <br> " ;
9 $script_name = $_SERVER [ " SCRIPT_NAME " ];
10 echo $script_name . " <br> " ;
11 $nav = substr ( ereg_replace ( " ^ $script_name " , "" , urldecode ( $nav )) , 1 );
12 echo $nav . " <br> " ;
13 $nav = preg_replace ( " /^.ht(m){1}(l){0,1}$/ " , "" , $nav ); // .html .htm
14 echo $nav . " <br> " ;
15 $vars = explode ( " / " , $nav );
16 print_r ( $vars );
17 echo " <br> " ;
18 for ( $i = 0 ; $i < Count ( $vars ); $i += 2 ){
19 $_GET [ " $vars [ $i ] " ] = $vars [ $i + 1 ];
20 }
21 return $_GET ;
22 }
23 mod_rewrite();
24 $year = $_GET [ " year " ]; // '2006'
25 echo $year . " <br> " ;
26 $action = $_GET [ " action " ]; // '_add'
27 echo $action ;
28 ?>
29

 

  
    
1 <? php
2 //
3
4 // server PATH_INFO /1,100,8630.html
5 if (@ $path_info = $_SERVER [ " PATH_INFO " ]){
6 //
7 if ( preg_match ( " /\/(\d+),(\d+),(\d+)\.html/si " , $path_info , $arr_path )){
8 $gid = intval ( $arr_path [ 1 ]); // 1
9 $sid = intval ( $arr_path [ 2 ]); // 100
10 $softid = intval ( $arr_path [ 3 ]); // 8630
11 } else die ( " Path:Error! " );
12 // soft.php?gid=1&sid=100&softid=8630
13 } else die ( ' Path:Nothing! ' );
14 ?>
15

 
phpを使用して擬似静的を実現したくない場合はapache,nginx,iisなどのサーバが持つurl rewrite機能を使用して設定します.
 
参考資料:
http://baike.baidu.com/view/1570373.htm?fr=ala0_1#2
http://blog.sina.com.cn/s/blog_4a657b6b0100gdnk.html
http://www.chinaz.com/Webbiz/Exp/01041029142010.html
http://apps.hi.baidu.com/share/detail/5308118