[転送]php擬似静的

WBOY
WBOYオリジナル
2016-06-23 14:31:29862ブラウズ

転載元:http://www.cnblogs.com/ainia/archive/2010/07/25/1784564.html

私はphp開発の仕事をしており、その開発中に昔聞いたことがあります。擬似静的プロセス」。しかし、それは決して理解されていません。

私は今日、この側面をよく理解することを最終的に決定しました。

まず、疑似静的とは何ですか:

疑似静的とは、URL 書き換えとも呼ばれ、静的 URL のように見える動的 URL です。つまり、動的 Web ページは URL メソッドを書き換えることによって動的 Web ページのパラメータを削除しますが、実際の Web ページのディレクトリに書き換えられたページを実装する必要はありません。

さらに、2 つの名詞解析が追加されています

静的 URL: 純粋な静的 HTML ドキュメント、ファイルタイプ: 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 ホーム ページでは多くのインタラクションは必要ありません。ここではフォーラム バージョンを使用すべきではありません。逆に、より考慮すべきは美しさです。互換性がある!直感的にわかる情報!パフォーマンス!そして安定感!

私は 4 つのメソッドの php 擬似静的実装を転送しています:

1 2 // 擬似静的メソッド 1
3
4 // localhost/php100/test.php? id|1 @action|2
5 $Php2Html_FileUrl = $_SERVER [ " REQUEST_URI " ];
6 echo $Php2Html_FileUrl "
" ; // /php100/test.php?id|1@action|2
7 $Php2Html_UrlString = str_replace ( " ? " , "" , str_replace ( " / " , "" , 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] = > アクション|2 )
11 echo "
;
12 foreach ( $Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr )
13 {
14 $Php2Html_TmpArray =explode ( " | " , $Php2Html_Ur lQuery Str );
15 print_r ( $Php2Html_TmpArray ); // Array ( [0] => id [1] => 1 ) ; Array ( [0] => action [1] => 2 )
16 echo "
; " ;
17 $_GET [ $Php2Html_TmpArray [ 0 ]] = $Php2Html_TmpArray [ 1 ];
18 }
19 // echo 'False static: $_GET 変数
';
20 print_r ( $_GET ) ; // Array ( [id|1@action|2] => [id] => 1 [action] => 2 )
21 echo "
"
22 echo "


; " ;
23 echo $_GET [id] . "
" ; // 1
24 echo $_GET [action]; // 2
25 ?>
26

1 2 // 疑似静的メソッド 2

3
4 // localhost/php100/test.php/1/2
5 $filename = Basename ( $_SERVER [ ' SCRIPT_NAME ' ]); 6 echo $_SERVER [ ' SCRIPT_NAME ' ]. "
" ; // /php100/test.php
7 echo $filename . "
" ; // test.php
8
9 if ( strto lower ( $filename ) == ' test.php ' ){
10 if ( ! empty ( $_GET [id])){
11 $id = intval ( $_GET [id]);
12 echo $id . 13 $action = intval ( $_GET [action]);
14 echo $action . "
;
15 } else {
16 $nav = $_SERVER [ ' REQUEST_URI ' ]
17 " . $nav . "
" ; // /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 . "
/ /1/ 2
22 $vars =explode ( " / " , $nav );
23 print_r ( $vars ); // Array ( [0] => [1] => 1 [2] => ; 2 )
24 echo "
" ;
25 $id = intval ( $vars [ 1 ]);
26 $action = intval ( $vars [ 2 ]);
28 echo $id 。 ' & ' . $アクション
29 }
30 ?>


1 php
2 // 伪静态方法三
3
4
5 function mod_rewrite(){
6 global $_GET ;
7 $nav = $_SERVER [ " REQUEST_URI " ];
8 echo $nav 。 "
" ;
9 $script_name = $_SERVER [ " SCRIPT_NAME " ];
10 $script_name をエコーし​​ます。 "
" ;
11 $nav = substr ( ereg_replace ( " ^ $script_name " , "" , urldecode ( $nav )) , 1 );
12 エコー $nav 。 "
" ;
13 $nav = preg_replace ( " /^.ht(m){1}(l){0,1}$/ " , "" , $nav ); // この句は去掉尾部の.html または .htm
14 echo $nav 。 "
" ;
15 $vars = 爆発 ( " / " , $nav );
16 print_r ( $vars );
17 エコー "
" ;
18 for ( $i = 0 ; $i 19 $_GET [ " $vars [ $i ] " ] = $vars [ $i + 1 ];
20 }
21 $_GET を返します。
22 }
23 mod_rewrite();
24 $年 = $_GET [ " 年 " ]; // 結果は '2006'
25 echo $year 。 "
" ;
26 $action = $_GET [ " アクション " ]; // 結果は '_add'
27 echo $action ;
28 ?>
29

1 php
2 // 伪静态方法四
3
4 // 利用サーバー变量取得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 書き換え機能を使用して設定を実行することもできます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。