現在の位置: ホーム> 最新記事一覧> phpでoutput_add_rewrite_varを使用して、rewrite_rulesで友好的なURLを生成します

phpでoutput_add_rewrite_varを使用して、rewrite_rulesで友好的なURLを生成します

gitbox 2025-06-05

PHP開発では、ユーザーフレンドリーなURL(いわゆるSEO URLまたは擬似静的URL)を生成することは一般的な要件です。ユーザーエクスペリエンスを改善するだけでなく、検索エンジンを含めるのにも役立ちます。ほとんどの開発者は、Apacheのmod_rewriteまたはnginxの書き換え関数を使用してそれを実装することを選択しますが、PHP自体は、特にクエリストリングベースのシステムを使用して擬似術の効果を達成したい場合に、特定のシナリオで動作するoutput_add_rewrite_var()などの補助メカニズムも提供します。

この記事では、URLがWebサーバーのルールを書き換えてユーザーフレンドリーなURL出力を実現して、 output_add_rewrite_var()を使用する方法について説明します。

output_add_rewrite_var()とは

output_add_rewrite_var()は、PHPによって提供される出力制御関数であり、 ECHO印刷、またはテンプレート( <a>タグとフォームを含む)を介して、指定されたクエリパラメーターをすべてのURLS出力に自動的に追加できます。この関数は、セッションIDの自動伝播によく使用され、他のカスタム変数にも使用できます。

 <?php
output_add_rewrite_var('page', 'home');
?>

上記のコードは自動的に追加されますか?ページ=ホームまたは&ページ=すべての出力URLとフォームのホーム

書き換えルールと組み合わせてURLを美しくします

output_add_rewrite_var()はクエリ文字列のみを追加できますが、サーバー側の書き換え関数を使用して、このクエリ文字列構造をよりエレガントなパス形式に変換できます。たとえば、put:

 https://gitbox.net/index.php?page=home

変換:

 https://gitbox.net/home

これは、サーバーの書き換えルールを通じて達成されます。

Apacheの例

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?page=$1 [L,QSA]

nginxの例

location / {
    try_files $uri $uri/ /index.php?page=$uri;
}

PHP処理ロジック

次に、 index.phpでは、$ _get ['page']の値に従って対応するコンテンツをロードできます。

 <?php
$page = $_GET['page'] ?? 'home';

switch ($page) {
    case 'home':
        include 'pages/home.php';
        break;
    case 'about':
        include 'pages/about.php';
        break;
    default:
        include 'pages/404.php';
}
?>

このようにして、 https://gitbox.net/aboutにアクセスすると、実際にはindex.php?page = aboutとして書き換えられ、PHPスクリプトは対応するページを認識してロードできます。

output_add_rewrite_var()を使用してリンクパラメーターを自動的に追加します

URLのクエリパラメーター(ページングパラメーター、言語パラメーターなど)をさらに自動化するには、以下を使用できます。

 <?php
output_add_rewrite_var('lang', 'zh');
?>

これにより、ページのリンクが自動的に変更されます。

 https://gitbox.net/about?lang=zh

書き換えルールと組み合わせて、パラメーターをさらに書き直すことができます。

 https://gitbox.net/zh/about

サーバールールに言語認識のレイヤーを追加するだけです。

まとめ

最新のフレームワーク(LaravelやSymfonyなど)は、より近代的で構造化されたルーティングソリューションを提供しますが、いくつかの軽量またはカスタム開発プロジェクトでは、PHPネイティブoutput_add_rewrite_var()は、いくつかの軽量またはカスタマイズされた開発プロジェクトでユーザーフレンドリーなURLを生成するための実行可能な方法です。この方法を習得すると、外部フレームワークに完全に依存することなく、プロジェクトのURL構造をより柔軟に制御できます。

さらに、このアプローチはレガシープロジェクトに特に役立ち、より良いURLパフォーマンスを実現するためにコード構造に大きな変更を必要としません。