(転送)URL書き換えによる静的リンク(PHP)

WBOY
リリース: 2016-06-13 13:25:31
オリジナル
649 人が閲覧しました

(移管) URL Rewrite によるリンク静的化の実装 (PHP)
検索エンジンは静的ページに非常に友好的であることがわかっているため、多くの Web サイトはクローラーが自身の Web サイトのコンテンツをクロールしやすくするために静的ページを生成します。ただし、非常に大規模なデータ変更を伴うフォーラム/ポストバー システムなど、一部のアプリケーションは、すべての静的リンクに適していない場合があります。現時点では、URL の書き換えによって疑似静的リンクを実現できます。つまり、Web サイトは外部的に静的リンクを使用します。内部的には、実際、動的ページの URL 形式は今でも使用されています。たとえば、次のようなリンク: http://www.ci123.com/abc.php?action=a&id=1 は、http://www.ci123.com/abc/a/ の形式に書き換えることができます。 1.html。これは、検索エンジン最適化の最も重要な側面の 1 つであり、Web サイト システムの内部リンクが将来変更された場合でも、元のリライト ルールを変更することでページに永久リンクを付与できるという追加の利点もあります。外部 URL の効率性が維持されることが保証されます。

以下では、Apache+PHP で URL 書き換えを実装するための 2 つの簡単な方法を紹介します。1 つ目はサーバー構成権限を持つユーザーに適しており、2 つ目はスペースをレンタルするユーザーにも適しています。最近の仕上げの学習体験。


1. サーバー構成権限を持つユーザーの場合は、Apache の mod_rewrite モジュールを使用することをお勧めします。mod_rewrite モジュールがインストールされていることが前提となります。 Apache 構成ファイルを開き、対応するホストのセクションを見つけて、次のコードを追加します:
RewriteEngine On
RewriteRule ^/abc/([a-z]+)/([0-9]+).html $/abc.php?action=$1&id=$2 [L] 次に、シェルでサービス httpdreload を実行し、Apache に設定をリロードさせます。これで、PHP ページに abc/a/1.html の形式でリンクを記述することができます。Apache がこの URL を解析すると、この URL が abc.php?action=a&id=1 の形式に書き換えられ、正しいページが返されます。 。正規表現を使用すると、ほぼすべてのリンク形式を実現できます。これは非常に強力なアプリケーションです。

2. スペースをレンタルしているユーザーの場合、通常、Apache の構成を変更する方法はありません。原則として、PHP ページにアクセスするためにパラメーターを渡す必要があります。通常の状況では、グローバル変数 $_GET は自動的に取得されます。たとえば、上記のリンクは、ページ内の $_GET['action'] および $_GET['id'] を通じて取得できます。 URLを書き換えています。各ページに url_rewrite.php ファイルが必要になります。内部のコードは次のとおりです:

$filename =basename($_SERVER['SCRIPT_NAME']);

if (strto lower($filename) ) == "abc.php") {
if (!empty($_GET[id])) {
$id = intval($_GET[id]);
$action = intval($ _GET [アクション]);
}
else {
$nav = $_SERVER["REQUEST_URI"];
$script = $_SERVER["SCRIPT_NAME"];
$nav = ereg_replace ( "^$script", "", urldecode($nav));
$vars =explode("/", $nav);
$action = intval($vars[1]);
$id = intval($vars[2]);
}
}
このようにして、ページ内のリンクもabcの形式で書くことができます。 .php/a/1 をクリックして、対応するページにアクセスします。
この方法は最初の方法よりも効率が低いことに注意してください。最初の方法は WEB サーバーの URL 解析プロセス中に実装されますが、ここでは 2 番目の方法は単なる回避策です。 . 最後の手段として、リンク フォームを変更するのは不便で柔軟性に欠けます。
皆さんのコミュニケーションやディスカッションを歓迎します!

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート