Nucleusのmod_rewriteを使った静的URL化

この記事は約3分で読めます。
スポンサーリンク

管理画面でFancyURLモードをONにし、
ファイルを数個編集すれば静的にはなりますが、
新たにBlogを追加した場合は静的にはなりません。

そこで、mod_rewriteが有効であれば使います。

.htaccessに以下を記述

RewriteEngine On
RewriteRule ^archive-([0-9]+)-([0-9]+)-([0-9]+).html+ index.php?archive=$2-$3&blogid=$1
RewriteRule ^item-([0-9]+).html+ index.php?itemid=$1
RewriteRule ^archivelist-([a-z]+).html+ index.php?archivelist=$1

書き換えた.htaccessアップロードし、
“archive-1-2001-09.html”と入力して表示されれば、
書き換えは成功しています(記事がなくてもOK)。

ここで500エラーとなれば、この方法は使えません。

これだけですと、URLはrewriteできましたが、
ページ中のリンク(A HREF=XXX)が静的ではありませんから、
検索エンジン対策にはなりません。

そこで、管理画面からテンプレートの編集に入り、以下を変更します。
<%archivelink%> → archive-<%blogid%>-<%year%>-<%month%>.html
<%itemlink%> → item-<%itemid%>.html
書き換えた後のリンクを表示させるわけです。

しかし、上記だけでは、個別記事(itemid)へのリンクは静的になりますが、
メンバー(memberid)やカテゴリ(catid)までは静的になりません。

記事の編集(action=edit)までは静的にする必要はないでしょうが、
メンバー(memberid)やカテゴリ(catid)を静的にする場合は、
上記を参考に追加してください。

但し、元BlogをBlog_01、追加したBlogをBlog_02とし、
其々のURLを
http://www.xxx.com/index.php
http://www.xxx.com/new.php
とすると、上記の設定(index.php)だけで
itemidに関しては問題はありませんが、
memberidやcatidについては問題が生じます。

Blog_02(new.php)が表示されている時に、
memberidやcatidに関する書き換え後のリンクをクリックすると
new.phpではなくindex.phpとなるので内容が変わってしまいます。

そこで、管理画面のテンプレートから書き換え後のリンクを設定しますが、
テンプレートを2つのBlog共通としている場合、
個別にリンクが設定できませんので困ることになります。

テンプレートを分け、適切なリンクが表示されるようにしましょう。

参考:
Tipsとヒント(nucleuscms.org)

タイトルとURLをコピーしました