php擬静的実現方法に基づいて解析する。

7806 ワード

phpの開発をしていますが、開発の過程で古くから「擬静」という話を聞きました。しかし、それを理解していませんでした。
今日はこの方面の内容をよく知ることにしました。
まず、何が擬静ですか?
擬静的な別の名前のURLは書き換えて、動的なURLが静的に見えるURLです。言い換えれば、動的ページはURLを書き換えることで動的ページを削除するパラメータを実現するが、実際のウェブページディレクトリでは書き換えページが存在する必要はない。
二つの名詞を追加して解析しています。
静的URL:純静的HTMLドキュメントでは、filetype:httmで検索できます。
ダイナミックURL:コンテンツはデータベースに保存し、要求に応じて内容を表示し、URLの中に?異なるパラメータを表示します。例えば、news.php?lang=cn&class=1&id=2
動的、静的、擬静的の間の利益と弊害(新)
ダイナミックURL
まず、動的なウェブサイトは現在Googleにとって、「捕まえられない」という言い方は間違っています。Googleは動的なウェブサイトをうまく処理して、スムーズにつかむことができます。次に「パラメータが3つを超えてはいけません」という言い方も正しくありません。Googleはパラメータが3つを超える動的なURLをキャプチャすることができますが、URLが長すぎるのを避けるためにはパラメータをできるだけ減らすべきです。
第二に、動的なウェブサイトは、上記のnews.phpという一定の利点がありますか?lang=cn&class=1&id=2を例にとって、ウェブサイトのパラメータはGoogleに正確に教えています。このURLの内容はcnで、分類1に属しています。コンテンツIDは2です。Googleがコンテンツの識別処理に便利です。
最後に、動的URLはできるだけ簡潔にするべきで、特にセッション識別(sid)とクエリ(query)パラメータは、大量の同じページをもたらしやすいです。
固定アドレス
まず、静的なアドレスが持つ絶対的な優位は明らかで、検索結果の中でクリック数が比較的高いかもしれません。
第二に、静的なアドレスは必ずしも最高のウェブサイト形式ではなく、動的なアドレスはGoogleにいくつかの識別可能なパラメータを教えることができますが、静的なアドレスは、ドキュメントの配置が適切ではない場合(例えば、偏平化しすぎて、HTMLファイルをルートディレクトリの下に置く)やその他の要因よりも、Googleに提供される参照情報が豊富です。
最後に、ギャグアシルGoogleは、この文に隠された意味がありますか?このタイプのURLを更新するページは時間がかかります。特に情報量が速くなると、各個別のページごとにコンパイルコードを変更しなければなりません。」ウェブサイトといっても、Googleシステムには同じような問題がありますか?
擬静アドレス
まず、擬静的なウェブサイトは動的なウェブサイトを「静的化」させてはいけません。擬静的なのは動的なウェブサイトの書き換えだけです。Googleは擬静的なのはHTML文書だとは思いません。
第二に、擬静的は望ましいが、冗長パラメータを除去し、URLを規範化し、できるだけページを繰り返さないように重点を置くべきである。
最後に、擬静的には大きな潜在的危険があります。ウェブサイトシステム、ウェブサイト構造、コンテンツ分布、パラメータの意味に詳しい状況で使用したほうがいいです。
擬似静的規則を書く時、価値のあるパラメータを保持して、前の例のnews.phpのように価値のあるパラメータを全部簡素化しないでください。lang=cn&class=1&id=2はnews-cn-class 1-id 2.と書き換えたほうがいいです。
さらに、擬似静的には、セッション識別情報(sid)とクエリパラメータ、/product.aspが含まれてはならない。sid=98971298178906&id=1234のような動的なウェブサイトの中のsidはもともとGoogleが識別して遮蔽することができますが、書き換えると/product/9898178906/1234になります。Googleは認識できないだけでなく、駅全体で無限の繰り返しページをもたらします。
私たちは擬静的かそれとも静的かを選ぶべきです。
       1、真静と偽静を使うことはSEOにとって何の違いもありません。
2、真静を使用するとハードディスクが破損し、フォーラムの性能に影響を与える恐れがある。
3、擬静的な使用はCPUの占有率を一定量占め、大量に使用するとCPUの過負荷を招く。
4、一番重要な点は、静的にすることはSEOのためです。
だから:
1、本当の静的な方法を使って直接排除することができます。いくら生成してもハードディスクにとっては傷だらけです。
2、本物と静的の効果が同じである以上、私達は擬静的を選ぶことができます。
3、しかし、擬静的な大量使用はCPUの過負荷を引き起こす。
4、だから私たちは大量に使わない限りいいです。
5、静的ではSEOにしか見せないので、擬静的にSEOにあげるだけでいいです。ユーザーに使う必要はありません。
6、だから私達はSEOに登るために専用のArchiverで擬静的なものを使えばいいです。
7、私の書いた文章を辛抱強く読んでくれてありがとうございます。
8、何か分からないところがありますか?それとも違った見方がありますか?どうぞおっしゃってください。
擬静的および真静的に関するコメント
本当の静的化と擬似静的はやはり本質的な区別がある。ユーザーをブラウズするために1つの純粋なhtmlと1つの呼び出しの複数のデータのphpはCPUの使用率の方面で明らかに前者が少ないです。もとはハードディスクをダウンロードして読み書きが頻繁だという人がいましたが、彼はデータベースを読み込んでディスクを書く必要はないと言っていました。しかもキャッシュの山のような分散phpもハードディスクに置いてあります。これらの読み取りはディスクで操作しませんか?おかしいです。
単一のhtml+画像Flashなどの添付ファイルを読めば、目的は達成できます。データベースを読んだり、phpキャッシュファイルを読んだり、データ出力を再統合したりします。写真Flashなどの添付ファイルはこんなにかかりますか?CMSのトップページは多くのインタラクティブがいらないです。フォーラムのセットはここで使うべきではないです。互換性がありますメッセージの直感!パフォーマンス!まだ安定があります
php擬静的に回転する4つの方法:

 <?php
 //      
 
 // localhost/php100/test.php?id|1@action|2
 $Php2Html_FileUrl = $_SERVER["REQUEST_URI"];
 echo $Php2Html_FileUrl."<br>";// /php100/test.php?id|1@action|2
 $Php2Html_UrlString = str_replace("?","",str_replace("/", "", strrchr(strrchr($Php2Html_FileUrl, "/"),"?")));
 echo $Php2Html_UrlString."<br>";// id|1@action|2
 $Php2Html_UrlQueryStrList = explode("@", $Php2Html_UrlString);
 print_r($Php2Html_UrlQueryStrList);// Array ( [0] => id|1 [1] => action|2 )
 echo "<br>";
 foreach($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr)
 {
 $Php2Html_TmpArray = explode("|", $Php2Html_UrlQueryStr);
 print_r($Php2Html_TmpArray);// Array ( [0] => id [1] => 1 ) ; Array ( [0] => action [1] => 2 )
 echo "<br>";
 $_GET[$Php2Html_TmpArray[0]] = $Php2Html_TmpArray[1];
 }
 //echo '   :$_GET  <br />';
 print_r($_GET); // Array ( [id|1@action|2] => [id] => 1 [action] => 2 )
 echo "<br>";
 echo "<hr>";
 echo $_GET[id]."<br>";// 1
 echo $_GET[action];// 2
 ?>

 <?php
 //      
 
 // localhost/php100/test.php/1/2
 $filename = basename($_SERVER['SCRIPT_NAME']);
 echo $_SERVER['SCRIPT_NAME']."<br>";// /php100/test.php
 echo $filename."<br>";// test.php
 
 if(strtolower($filename)=='test.php'){
 if(!empty($_GET[id])){
 $id=intval($_GET[id]);
 echo $id."<br>";
 $action=intval($_GET[action]);
 echo $action."<br>";
 }else{
 $nav=$_SERVER['REQUEST_URI'];
 echo "1:".$nav."<br>";// /php100/test.php/1/2
 $script=$_SERVER['SCRIPT_NAME'];
 echo "2:".$script."<br>";// /php100/test.php
 $nav=ereg_replace("^$script","",urldecode($nav));
 echo $nav."<br>"; // /1/2
 $vars=explode("/",$nav);
 print_r($vars);// Array ( [0] => [1] => 1 [2] => 2 )
 echo "<br>";
 $id=intval($vars[1]);
 $action=intval($vars[2]);
 }
 echo $id.'&'.$action;
 }
 ?>

<?php
 //       
 function mod_rewrite(){
 global $_GET;
 $nav=$_SERVER["REQUEST_URI"];
 echo $nav."<br>";
 $script_name=$_SERVER["SCRIPT_NAME"];
echo $script_name."<br>";
$nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1);
echo $nav."<br>";
$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//        .html .htm
echo $nav."<br>";
$vars = explode("/",$nav);
print_r($vars);
echo "<br>";
for($i=0;$i<Count($vars);$i+=2){
$_GET["$vars[$i]"]=$vars[$i+1];
}
return $_GET;
 }
 mod_rewrite();
 $year=$_GET["year"];//   '2006'
 echo $year."<br>";
$action=$_GET["action"];//   '_add'
 echo $action;
 ?>

 <?php
 //      
 
 //  server     PATH_INFO        /1,100,8630.html              
 if(@$path_info =$_SERVER["PATH_INFO"]){
 //        
 if(preg_match("/\/(\d+),(\d+),(\d+)\.html/si",$path_info,$arr_path)){
 $gid  =intval($arr_path[1]); //    1
 $sid  =intval($arr_path[2]); //   100
$softid =intval($arr_path[3]); //   8630
}else die("Path:Error!");
//   soft.php?gid=1&sid=100&softid=8630
}else die('Path:Nothing!');
?>
phpを使って擬静化を実現したくないなら、apache、nginx、iisなどのサーバーが持つurl rewrite機能を使って設定します。
参考資料:
http://baike.baidu.com/view/1570373.htm?fr=ala0_1
http://blog.sina.com.cn/s/blog_4 a 657 b 6 b 0100 gdnk.
http://www.chinaz.com/Webbiz/Exp/01041029142010.html
http://apps.hi.baidu.com/share/detail/5308118
このページでは、php疑似静的な実現方法に基づいて解析した文章を紹介します。より多くの関連php疑似静的な実現内容については、以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。