ホームページ  >  記事  >  php教程  >  検索エンジンの URL 最適化

検索エンジンの URL 最適化

WBOY
WBOYオリジナル
2016-06-21 08:59:191214ブラウズ

我在写晋远信息网(www.geofuture.net)时没有考虑到URL如何面向搜索引擎优化,完成了以后才开始优化的。这时要考虑一方面要静态的URL,一方面要尽量保持原有的程序不变以便于以后维护,所以就采用url_rewrite的方法。下面是httpd.conf中相应的部分


    DocumentRoot /home/geofuture
    ServerName www.geofuture.net
    ServerAlias *.geofuture.net geofuture.net *.cic123.com
    DirectoryIndex index.files index.html index.php
    RewriteEngine On
    #RewriteLog logs/rewrite.log
    #RewriteLogLevel 9
    #RewriteRule / http://geofuture.vicp.net/ [L]
    RewriteCond %{REQUEST_FILENAME}    index.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    error.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    cat.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    area.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    info.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    topic.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    post.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    profile.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    userinfo.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    cert.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    revise.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    review.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    feedback.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    keyrank.files   [OR]
    RewriteCond %{REQUEST_FILENAME}    rss.files
    RewriteRule ^(.+?)\Q(.*)$    $1=$2 [N]
    RewriteRule ^(.+?)ZZ(.+)$    $1&$2 [N]
    RewriteRule ^(.+?)\.files(.*)$      $1.php$2 [N]
    RewriteRule ^(.+?)\.php(/|&)(.+).html$      $1.php?$3 [L]
    ErrorDocument 400 /error.php?status=400
    ErrorDocument 401 /error.php?status=401
    ErrorDocument 403 /error.php?status=403
    ErrorDocument 404 /error.php?status=404
    ErrorDocument 405 /error.php?status=405
    ErrorDocument 408 /error.php?status=408
    ErrorDocument 410 /error.php?status=410
    ErrorDocument 411 /error.php?status=411
    ErrorDocument 412 /error.php?status=412
    ErrorDocument 413 /error.php?status=413
    ErrorDocument 414 /error.php?status=414
    ErrorDocument 415 /error.php?status=415
    ErrorDocument 500 /error.php?status=500
    ErrorDocument 501 /error.php?status=501
    ErrorDocument 502 /error.php?status=502
    ErrorDocument 503 /error.php?status=503
    ErrorDocument 506 /error.php?status=506

我只把以内容为主的栏目优化了,至于登录和搜索等部分保持不变,因为这些部分也是搜索引擎不关心的。同时,一些常见的状态码(HTTP Status)也有相应的静态页面。上面只修改了外来请求的URL,而程序生成的URL通过下面的代码实现:

//-------------- セクション名 ---------------------- -------------
// アニメーション URL 改写成静态
function url_rewrite($buffer)
{
//return $buffer;
$search = array(
'.php',
'?',
'&',
'filesZZ',
'=',
'hrefQ',
) ;
$replace = array(
'.files',
'/',
'ZZ',
'files/ZZ',
'Q',
'href=',
);
preg_match_all('/href="/(index|error|cat|area|info|topic| post|profile|userinfo|cert|revise|review|feeback|keyrank| rss) .php(.*?)"/', $buffer, $match);
$url = str_replace($search, $replace, $match[0]);
$url = preg_replace(' /.files(.+?)(#.+?)?"$/', '.files\1.html\2"', $url);
return str_replace($match[0], $url) , $buffer);
}
?>

上の関数の数は、パブリック ファイルの領域に配置されます。その後、必要な拡張子として、

ob_start("url_rewrite");

これもオリジナルのプログラムでのみ変更が必要な場所です。これにはさらに問題があります。完了後に $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'] を経由して、後からの静的 URL を取得できるだけです。すべては、起動 URL の代コードにすべて依存して修正一下にあり、元の URL を処理できます。したがって、私は迂回するメソッドを考えています:

//---------- --- セクション名 -----------------------------------
// 恢复成动态URL
function url_resume($url)
{
$search = array(
'.files',
'.php/',
'ZZ',
'/ZZ ',
'Q',
'.html',
);
$replace = array(
'.php',
'.php?',
'&',
'?&',
'=',
'',
);
$url = str_replace($search, $replace, $url);
return $url;
}
?>
には上の関数があり、動作 URL が必要な場合は、各コア関数を再書き込みすることなく、下に記述するだけで済みます。 url_rewrite と url_resume は逆のプロセスですが、それぞれのパラメータが異なることに注意してください。 前者のパラメータはセキュリティ領域全体であり、後者は単一の URL だけです。高速性を高めることができます。



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