Home > URL関連
最近のアイテム一覧
- August 2005
- URLのサーチエンジン対策(Magical URL)(08/27/05)
- URLのサーチエンジン対策(mod_rewrite)(08/27/05)
- URLのサーチエンジン対策(Fancy URL)(08/27/05)
Fancy URLとmod_rewriteの面倒な点を解決するMagical URLという方法があります。
参考
nakahara21[FancyURLで自動生成するファイル名をmod_rewrite]
nakahara21[FancyURLとMagicalURLモードで複数blog運用 ]
まずここを参考にFancy URLにします。
それから、/nucleus/libs/globalfunctions.php 260行目付近
995行目付近
さらにルートディレクトリの.htaccessを作成します。Fancy URLの分も入れた.htaccessを以下に記載します。
↑注意:ページ幅の関係で本来改行すべきでない箇所で改行されていますが、コピー&ペーストすると適切な場所で改行されますので、.htaccessにコピー&ペーストで貼り付けてください。
私の場合は下記も追加しないとリンク切れが発生してしまいました。
最後に管理ホーム > グローバル設定でFancy URLに設定します。
参考
nakahara21[FancyURLで自動生成するファイル名をmod_rewrite]
nakahara21[FancyURLとMagicalURLモードで複数blog運用 ]
変更
上記の記事を参考にMagical URLに変更してみます。まずここを参考にFancy URLにします。
それから、/nucleus/libs/globalfunctions.php 260行目付近
// decode path_infoを
if ($CONF['URLMode'] == 'pathinfo') {
$data = explode("/",serverVar('PATH_INFO'));
// decode path_info if ($CONF['URLMode'] == 'pathinfo') {940行目付近
$data_str = preg_replace("/.html$/","",serverVar("PATH_INFO"));
$data = explode("_",$data_str);
/**を
* Centralisation of the functions that generate links
*/
function createItemLink($itemid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ItemURL'] . '/item/' . $itemid;
else
$link = $CONF['ItemURL'] . '?itemid=' . $itemid;
return addLinkParams($link, $extra);
}
function createMemberLink($memberid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['MemberURL'] . '/member/' . $memberid;
else
$link = $CONF['MemberURL'] . '?memberid=' . $memberid;
return addLinkParams($link, $extra);
}
function createCategoryLink($catid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['CategoryURL'] . '/category/' . $catid;
else
$link = $CONF['CategoryURL'] . '?catid=' . $catid;
return addLinkParams($link, $extra);
}
function createArchiveListLink($blogid = '', $extra = '') {
global $CONF;
if (!$blogid)
$blogid = $CONF['DefaultBlog'];
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ArchiveListURL'] . '/archives/' . $blogid;
else
$link = $CONF['ArchiveListURL'] . '?archivelist=' . $blogid;
return addLinkParams($link, $extra);
}
function createArchiveLink($blogid, $archive, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ArchiveURL'] . '/archive/'.$blogid.'/' . $archive;
else
$link = $CONF['ArchiveURL'] . '?blogid='.$blogid.'&archive=' . $archive;
return addLinkParams($link, $extra);
}
function createBlogLink($url, $params) {
return addLinkParams($url . '?', $params);
}
function createBlogidLink($blogid, $params = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['BlogURL'] . '/blog/' . $blogid;
else
$link = $CONF['BlogURL'] . '?blogid=' . $blogid;
return addLinkParams($link, $params);
}
/**
* Centralisation of the functions that generate links
*/
function createItemLink($itemid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ItemURL'] . '/item_' . $itemid;
else
$link = $CONF['ItemURL'] . '?itemid=' . $itemid;
return addLinkParams($link, $extra);
}
function createMemberLink($memberid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['MemberURL'] . '/member_' . $memberid;
else
$link = $CONF['MemberURL'] . '?memberid=' . $memberid;
return addLinkParams($link, $extra);
}
function createCategoryLink($catid, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['CategoryURL'] . '/catid_' . $catid;
else
$link = $CONF['CategoryURL'] . '?catid=' . $catid;
return addLinkParams($link, $extra);
}
function createArchiveListLink($blogid = '', $extra = '') {
global $CONF;
if (!$blogid)
$blogid = $CONF['DefaultBlog'];
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ArchiveListURL'] . '/archivelist_' . $blogid;
else
$link = $CONF['ArchiveListURL'] . '?archivelist=' . $blogid;
return addLinkParams($link, $extra);
}
function createArchiveLink($blogid, $archive, $extra = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['ArchiveURL'] . '/archive_'.$blogid.'_' . $archive;
else
$link = $CONF['ArchiveURL'] . '?blogid='.$blogid.'&archive=' . $archive;
return addLinkParams($link, $extra);
}
function createBlogLink($url, $params) {
return addLinkParams($url . '?', $params);
}
function createBlogidLink($blogid, $params = '') {
global $CONF;
if ($CONF['URLMode'] == 'pathinfo')
$link = $CONF['BlogURL'] . '/blogid_' . $blogid;
else
$link = $CONF['BlogURL'] . '?blogid=' . $blogid;
return addLinkParams($link, $params);
}
995行目付近
function addLinkParams($link, $params) {を
global $CONF;
if (is_array($params)) {
if ($CONF['URLMode'] == 'pathinfo') {
foreach ($params as $param => $value) {
$link .= '/' . $param . '/' . urlencode($value);
}
} else {
foreach ($params as $param => $value) {
$link .= '&' . $param . '=' . urlencode($value);
}
}
}
return $link;
}
function addLinkParams($link, $params) {と変更します。
global $CONF;
if (is_array($params)) {
if ($CONF['URLMode'] == 'pathinfo') {
foreach ($params as $param => $value) {
$link .= '_' . $param . '_' . urlencode($value);//←この行もです
}
} else {
foreach ($params as $param => $value) {
$link .= '&' . $param . '=' . urlencode($value);
}
}
}
$link .= ".html";
if(strstr ($link, '//')){ $link = str_replace(".com//", ".com/", $link);} //NP_TrackBack用
if(strstr ($link, '/')){ $link = str_replace("item/", "item_", $link);} //NP_Latest Writebacks用
return $link; }
さらにルートディレクトリの.htaccessを作成します。Fancy URLの分も入れた.htaccessを以下に記載します。
↑注意:ページ幅の関係で本来改行すべきでない箇所で改行されていますが、コピー&ペーストすると適切な場所で改行されますので、.htaccessにコピー&ペーストで貼り付けてください。
私の場合は下記も追加しないとリンク切れが発生してしまいました。
最後に管理ホーム > グローバル設定でFancy URLに設定します。
.htaccessのmode_rewriteでURlを書き換えて、
というURlが使えるようにする方法です。
通常NucleusのURLは,
そこでNucleusではより検索エンジンに登録されやすいFancy URLというURL形式が使えます。
Fancy URLとは、
重要: URLの末尾にスラッシュ(/)は絶対に入れないでください。
#http://example.com/blog/などとディレクトリの下にNucleusをインストールしている場合は
画像やファイルへのリンクURLが相対指定だと不具合が出ます。絶対指定にする必要があります。
参考 Funcy URLモード
また、mod_rewriteを使ったURL変換もできます。
http://example.org/index.php?itemid=1234という形式ですが、この形式ですと検索エンジンにクローリングされにくくなります。
そこでNucleusではより検索エンジンに登録されやすいFancy URLというURL形式が使えます。
Fancy URLとは、
http://example.org/item/1234というURL形式でNucleusが使えるURLモードです。
Fancy URLが使える条件
.htaccessが使えるサーバーでなければなりません。
Fancy URLの設定方法
(1)ファイルのコピー
/extra/fancyurls ディレクトリにある全てのファイルをルートディレクトリ(index.php と action.phpがあるディレクトリ)にコピーします。
(2).htaccessの変更
●すでにサーバーのルートディレクトリに.htaccessファイルがある場合
まず現在の.htaccessファイルをダウンロード後に今回の /extra/fancyurls ディレクトリにある.htaccessファイルの中身を追加してください。(FTPソフトでは標準設定では.htaccessファイルは見えないことが多いので、確認方法を調べた上で存在を確認してください。)
ちなみにサーバーがXREAでFTPソフトがrootFTPの場合は、ホストの設定 > 高度で「LISTコマンドでファイル一覧を取得」のチェックを外すと見えるようになります。
●サーバーのルートディレクトリに.htaccessファイルが無い場合
/extra/fancyurls ディレクトリにある.htaccessファイルをそのまま使用してください。
(3)fancyurls.comfig.phpの変更
fancyurls.config.phpのファイルの中の$CONF['Self']の値を自分のトップページのURLとします。
自分のサイトのトップページのURLが「http://example.com/」とすれば、
$CONF['Self'] = 'http://www.yourhost.com/yourpath';を
$CONF['Self'] = 'http://example.com';と変更します。
重要: URLの末尾にスラッシュ(/)は絶対に入れないでください。
(4)index.phpの変更
同様にindex.phpファイルの
$CONF['Self'] = 'index.php';を
$CONF['Self'] = '';と変更します。
#http://example.com/blog/などとディレクトリの下にNucleusをインストールしている場合は
$CONF['Self'] = '.';と、カンマ(.)を入れるとうまくいきました。
(5)ファイルのアップロード
(1)〜(4)のファイルをサーバにアップロードします。
(6)管理画面での設定
最後に、管理ホーム > グローバル設定においてURLモードを「FancyURLモード」に変更します。
■注意画像やファイルへのリンクURLが相対指定だと不具合が出ます。絶対指定にする必要があります。
参考 Funcy URLモード
また、mod_rewriteを使ったURL変換もできます。