当 WEB の大改修 第二弾!!
Back
HOME
前回の当WEB大改修の第二弾。前回は全データのテキスト化を果たしたので、今回は構造の大改修を実施する。実はこれはリンクを保存して見て戴いている方がもし居られたら、非常に迷惑な内容となる。それに対する対策も、今回の勉強の一つである。
目的
- 煩雑になっているフォルダを整理
- 同様のモジュールを一ヶ所にし、各ページから共用、又はモジュール内で分岐する
- 見た目の変更は行わず、今まで同様とする
- 旧リンクによるアクセスを改修後のリンクに転送し、出来るだけ混乱を避ける
煩雑になっているフォルダを整理
.
├── _appearance
│ ├── css
│ └── images
├── _modules
│ ├── config.php
│ └── function.php
├── _parts
│ ├── header.php
│ └── footer.php
├── app
├── downloads
├── pages
│ ├── genre1
│ └── genre2
├── index.php
├── favicon.ico
└── sitemap.txt
それぞれの投稿にはジャンルが有って、過去(アーカイブ)の私事、仕事、シリーズ物、それら区別無しの現行シリーズなど。
先ずこれらの投稿類を
pages というフォルダにそのまま移動。
次に、画像フォルダや css をまとめて
_appearance、検索や表示などの PHP のプログラムを
_modules に
後は、各ページに貼り付けるヘッダーや共通のボタン類など、部品類を
_parts と言うフォルダにまとめる。
もし、
app や
downloads 等が有れば追加する。
* 一般的に良く用いられるフォルダ名とは異なっています。
* sitemap.txt については後述
共用モジュールの構成
- index.php からヘッダー (header.php) を組み込む時に、ルートフォルダの index.php であると指定する。
index.php
<?php
$invoker = 'main';
include($_SERVER['DOCUMENT_ROOT'] . '/_parts/header.php');
?>
$_SERVER['DOCUMENT_ROOT'] とはサイトのルートディレクトリを表す。ただ、ローカルでは /var/www/html を指すので注意。
- 次に、呼び出された header.php 内部で、config.php が使用できるように組み込む。
header.php
<?php
// _config.php で規定した変数を利用する
require_once($_SERVER['DOCUMENT_ROOT'] . '/_modules/config.php');
?>
- 最終的に config.php の中では・・・
header.php
<?php
// システム用フォルダのエイリアス
define('PARTS', $_SERVER['DOCUMENT_ROOT'] . '/_parts/');
define('APPEARANCE', $_SERVER['DOCUMENT_ROOT'] . '/_appearance/');
define('MODULES', __DIR__ . '/');
// ジャンルごとのホームディレクトリー
if ($invoker === 'main'))
{
define('GENRE1', './pages/genre1/');
define('GENRE2', './pages/genre2/');
}
elseif ($invoker === 'sub') //呼び出し元(Invoker)が /pages に有る場合)
{
define('GENRE1', './genre1/');
define('GENRE2', './genre2/');
}
?>
これで、header.php 以外のパーツを呼び出したり、呼び出し元でジャンル内の投稿を検索したりするコードで同じ変数を使って、
相対的には違う場所を間違わず指定できる。
つまり、index.php 内部で設定したフラッグが、そのページに組み込まれるヘッダー(header.php)を通じて、config.php に受け渡されたことになる。
この事は、その他の場面でも非常に柔軟なコーディングが可能となる。
見る側からのリンク切れに極力対処する
これには、便利な方法が有る。ChatGPTの教えによると、サイトのルートに .htaccess を置いて、それに新旧フォルダをリストして転送することが可能らしい。
早速やってみた。
- 先ず、ファイルを作成、又は追記する。
.htaccess
RedirectMatch 301 ^/genre1(/.*)?$ /pages/genre1$1
RedirectMatch 301 ^/genre2(/.*)?$ /pages/genre2$1
他の作業が終了し、レンタルサーバにアップロードした後、旧 URL(例えば /pages を含まない genre1/some.php)を呼んでみる、
結果は、ブラウザーのアドレス・バーに入力した旧 URL が瞬時に新しい pages 付きに置き換わって、ページが表示された。
最後に、前述の sitemap.txt について、
今回改修したフォルダ構成の投稿すべてについて(pages内の画像ファイルなどを省いた .php ファイル)sitemap.txt にリストアップする
sitemap.txt
:
:
https://somesite.com/pages/pages/filename_1.php
https://somesite.com/pages/pages/filename_2.php
https://somesite.com/pages/pages/filename_3.php
https://somesite.com/pages/pages/filename_4.php
https://somesite.com/pages/pages/filename_5.php
https://somesite.com/pages/pages/filename_6.php
:
相当数存在する場合は、Python 等で sitemap.txt を出力ファイルとするコードを AI に聞いてみると良いだろう。
Google Search Console を呼び出し [今すぐ開始] をクリックすると、左ペインにメニューが表示されるので、中程の [サイトマップ] を選択し、
sitemap.txt と入力して [送信] する。
ルートディレクトリに置いておくと、いずれ検索されるらしいが、少しでも新しいリンクを探し当ててくるだろう。
Back
HOME

この 作品 は
クリエイティブ・コモンズ 表示 - 非営利 - 改変禁止 4.0 国際 ライセンス
の下に提供されています。
English
Powered by