ホームページ  >  記事  >  バックエンド開発  >  擬似静的状態とは何ですか? PHP で擬似静的を実装する 3 つの方法の紹介

擬似静的状態とは何ですか? PHP で擬似静的を実装する 3 つの方法の紹介

零下一度
零下一度オリジナル
2017-07-26 16:01:0511497ブラウズ

擬似静的とは、実際の静的に対して相対的なものです。通常、検索エンジンの利便性を高めるために、記事のコンテンツから静的ページを生成しますが、一部の情報をリアルタイムで表示したいと考えている人もいます。または、動的スクリプトを使用して問題を解決したい場合もあります。 Web サイトのコンテンツは静的に表示できません。しかし、これでは検索エンジンに対する親しみやすさが失われます。擬似静的技術を生み出した 2 つの中間の方法を見つける方法。表示されているのはHTMLなどの静的なページですが、実際にはASPなどの動的スクリプトを使って処理されます。

疑似静的別名: URL 書き換え

主にSEO用です。 (SEOって何ですか? こんなことは聞かないでください。笑~インターネットで仕事をしている人はSEOを理解していません~~~~)

方法 1:

たとえば、このページ

/soft.php/1,100,8630.html

実際、処理されているスクリプトはsoft.phpで、パラメータは1,100,8630です

Soft.php?a=1&b=1=100&c=8630 と同等ですが、この URL は覚えるのが難しすぎます。検索エンジンもそれを好みません。

真の静的とは、完全に生成された HTML です。

クライアントがアクセスしたときに直接出力します。スクリプトの説明は不要です。トラフィックが非常に多い場合 (毎日何百万ものアクセスがある場合など)、非常に良い結果が得られます。つまり、この HTML ページはサーバー側に実際に存在します。

もちろん、ウェブサイトのトラフィックがそれほど大きくない場合です。 URL の書き換えが最良の方法です (私の個人的な意見では、トラフィックが多い場合は負荷分散を検討してください。どちらでも構いません)

URL 書き換えには、APACHE や IISREWRITE など、さまざまな方法があります。 PHP スクリプトでも直接処理できます。例えば上記の例では、PHPスクリプトで直接処理しています(この方法の利点は、トラフィック量が多い時のWEBサーバーへの負荷を直接軽減できることです。追記:これも個人的な意見です。

================================================

PHP の疑似静的プログラムの実装方法について、プログラムを例に挙げて説明します。実際、私は以前にこの方法を他のフォーラム コミュニティに投稿しました

。 プログラム例:

/soft.php/1,100,8630.html

コード:

//サーバー変数を使用して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


//とても簡単です。 ~)

方法 2:

1. Apache 設定ファイル httpd.conf を開きます。

2. #LoadModule rewrite_module modules/mod_rewrite の前の # を削除します

3. httpd.conf を追加します:

<IfModule mod_rewrite.c>RewriteEngine On#RewriteCond %{ENV:SCRIPT_URL} (?:index|dispbbs)[-0-9]+.htmlRewriteRule ^(.*?(?:index|dispbbs))-([-0-9]+).html 1.php?__is_apache_rewrite=1&__rewrite_arg=2</IfModule>
四 要实现asp帖子URL到php帖子的映射,在 第三步的<IfModule mod_rewrite.c>和</IfModule>之间添加:
RewriteMap tolowercase int:tolowerRewriteCond %{QUERY_STRING} (?:boardid|page|id|replyid|star|skin)=d+ [NC]RewriteRule ^(.*(?:index|dispbbs)).asp 1.php?{tolowercase:%{QUERY_STRING}}&__is_apache_rewrite=1

5. httpd.conf を保存し、Apache を再起動します

方法 3:

<?php/*功能:PHP伪静态化页面的实现具体用法:例如链接为:test.php/year/2006/action/_add.htmlmod_rewrite();$yearn=$_GET["year"];//结果为&#39;2006&#39;$action=$_GET["action"];//结果为&#39;_add&#39;
*/function mod_rewrite(){global $_GET;$nav=$_SERVER["REQUEST_URI"];$script_name=$_SERVER["SCRIPT_NAME"];$nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1);$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm$vars = explode("/",$nav);for($i=0;$i<Count($vars);$i+=2){$_GET["$vars[$i]"]=$vars[$i+1];}return $_GET;}mod_rewrite();$yearn=$_GET["year"];//结果为&#39;2006&#39;$action=$_GET["action"];//结果为&#39;_add&#39;echo $yearn;echo $action;?>
<?php/*

機能: PHP疑似静的ページの実装
具体的な使い方:
たとえば、リンクは次のとおりです: test.php/year/2006/action/_add.html

mod_rewrite();$yearn=$_GET["year"];//结果为&#39;2006&#39;$action=$_GET["action"];//结果为&#39;_add&#39;
*/function mod_rewrite(){global $_GET;$nav=$_SERVER["REQUEST_URI"];$script_name=$_SERVER["SCRIPT_NAME"];$nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1);$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm$vars = explode("/",$nav);for($i=0;$i<Count($vars);$i+=2){$_GET["$vars[$i]"]=$vars[$i+1];}return $_GET;}mod_rewrite();$yearn=$_GET["year"];//结果为&#39;2006&#39;$action=$_GET["action"];//结果为&#39;_add&#39;echo $yearn;echo $action;?>

以上が擬似静的状態とは何ですか? PHP で擬似静的を実装する 3 つの方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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