私は PHP の開発作業を行っており、開発プロセス中に「擬似静的」について長い間聞いてきました。しかし、それは決して理解されていません。
私は今日、この側面をよく理解することを最終的に決定しました。
まず、疑似静的とは何ですか:
疑似静的とは、URL 書き換えとも呼ばれ、静的 URL のように見える動的 URL です。つまり、動的 Web ページは URL メソッドを書き換えることによって動的 Web ページのパラメータを削除しますが、実際の Web ページのディレクトリに書き換えられたページを実装する必要はありません。
さらに、2 つの名詞解析が追加されています
静的 URL: 純粋な静的 HTML ドキュメント、filetype:htm を使用してクエリできる Web ページ
動的 URL: コンテンツはデータベースに保存され、コンテンツは要件に応じて URL が ? で始まります。 # & さまざまなパラメーターを表示します (news.php?) lang=cn&class=1&id=2
動的、静的、擬似静的(新規)の長所と短所
動的URL
まず、動的URLは現在Googleにとって「クロールできない」というのは間違いです。 . Google は動的 URL を非常にうまく処理し、スムーズにクロールできます。第 2 に、「パラメータが 3 つを超えることはできない」という記述も誤りです。ただし、長すぎる URL を避けるために、パラメータは最小限に抑える必要があります。
第二に、上で述べたように、news.php? には動的 URL には一定の利点があります。 lang=cn&class=1&id=2 たとえば、URL 内のパラメータは、この URL のコンテンツ言語が cn で、カテゴリ 1 に属し、コンテンツ ID が 2 であることを Google に正確に伝えます。これにより、Google は識別しやすくなり、コンテンツを処理します。
最後に、動的 URL、特にセッション識別子 (sid) とクエリ (クエリ) パラメーターは、できるだけ簡潔にする必要があります。これにより、同一のページが多数発生しやすくなります。
静的 URL
まず、静的 URL の絶対的な利点は、/product/nokia/n95.html と /about.html が理解しやすいため、比較的高いクリック数が得られることです。検索結果。
第 2 に、静的 URL は URL の最良の形式ではない可能性があります。ただし、静的 URL のドキュメント レイアウトが十分に適切でない場合 (例: 平坦すぎる場合)、動的 URL は Google に認識可能なパラメータを伝えることができます。 、HTML ドキュメント (すべてルート ディレクトリに配置) などの要素が含まれているため、静的 URL が Google に提供するほど豊富な参照情報はありません。
最後に、シシュはこの Google の記事に隠された意味があると思いますか? 「この種の URL を含むページの更新は、特に情報量が急速に増加する場合に時間がかかります。これは Web サイトではありますが、Google システムでも同様です。」そのような問題はありますか?
疑似静的 URL
まず、疑似静的 URL は動的 URL を「静的」にすることはできません。Google は疑似静的 URL を HTML ドキュメントとはみなしません。次に、擬似静的が推奨されますが、冗長なパラメーターの削除、URL の標準化、重複ページの回避に重点を置く必要があります。
最後に、擬似静的には大きな潜在的な危険性があります。Web サイトのシステム、Web サイトの構造、コンテンツの配布、およびパラメーターの意味を理解している場合に使用することをお勧めします。
疑似静的ルールを作成するときは、貴重なパラメーターを保持する必要があり、前の例の news.php など、すべての貴重なパラメーターを合理化する必要はありません。 lang=cn&class=1&id=2 は、過度に簡潔にして news-2.html として書き換えるよりも、news-cn-class1-id2.html として書き換えた方がよいでしょう。
さらに、擬似静的ファイルにはセッション ID (sid) およびクエリ (クエリ) パラメータ、/product.asp? を含めることはできません。 sid=98971298178906&id=1234 のような動的 URL の場合、その sid は本来 Google によって認識されブロックされますが、/product/98971298178906/1234 に書き換えられると、Google はそれを認識できなくなるだけでなく、認識できなくなります。サイト全体で無制限の重複ページが発生します (セッションごとに新しいセッション ID が生成されます)。
疑似静的と真の静的のどちらを選択すべきですか
1. SEO に true static を使用するか false static を使用するかに違いはありません
2. true static を使用すると、ハードディスクに損傷が発生し、フォーラムのパフォーマンスに影響を与える可能性があります
3. を使用するpseudo-static は一定量の CPU 占有量を占有し、多用すると CPU 過負荷が発生します
4. 最も重要な点は、SEO のために static が必要であるということです
つまり:
1. true static メソッドを使用すると、直接それは、どのように生成されたとしても、ハードディスクに非常に有害であるためです。
2. true static と false static の効果は同じなので、擬似静的を選択できます。
3. ただし、擬似静的を多用すると CPU の過負荷が発生します。
4. ということで、大量に使わない限りは大丈夫です。
5. 静的はSEO専用なので、SEOには疑似静的だけが必要で、ユーザーが使用する必要はありません。
6. したがって、SEO クローリングのために特別に提供されているアーカイバで pseudo-static を使用するだけで済みます。
7. 私の記事を読んでくださった皆様、ありがとうございました。
8. 質問や異なる意見があれば、お気軽に
擬似静的と真の静的についてのコメント
真の静的と擬似静的の間には本質的な違いがあります。ユーザーを閲覧するための純粋な HTML と複数のデータを呼び出す PHP の処理は、前者に比べて CPU 使用率が大幅に低くなります。かつて誰かが、HTML をダウンロードするときにハードディスクの読み取りと書き込みが頻繁に行われると言ったのを覚えています。彼は、あたかもデータベースの読み取りにディスクへの読み取りと書き込みが必要ないかのように言いました。さらに、キャッシュされた散在する PHP も多数存在します。これらの読み取りにはディスク操作が必要ではありませんか?ばかげている。
目的は、単一の HTML + 画像 Flash とその他の添付ファイルを読み取ることで達成できます。なぜわざわざデータベースを読み取り、php キャッシュ ファイルを読み取り、データ出力を再統合してから、画像 Flash とその他の添付ファイルを追加するのでしょうか。 CMS ホーム ページでは多くのインタラクションは必要ありません。ここではフォーラム バージョンを使用すべきではありません。逆に、より考慮すべきは美しさです。互換性がある!直感的にわかる情報!パフォーマンス!そして安定感!
PHP で疑似静的を実装する 4 つの方法:
<p class="sycode"> 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 </p>
<p class="sycode"> 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 </p>
<p class="sycode"> 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 </p>
<p class="sycode"> 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 </p>
擬似的な実現にphpを使いたくない場合-static を使用すると、Apache、nginx、iis、およびその他のサーバーに付属する URL 書き換え機能のセットアップを使用できます。
参考:
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