Home > URL関連

最近のアイテム一覧

Category: URL関連
Posted by: kazzz
Fancy URLとmod_rewriteの面倒な点を解決するMagical 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') {
$data_str = preg_replace("/.html$/","",serverVar("PATH_INFO"));
$data = explode("_",$data_str);
940行目付近
/**
* 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に設定します。

Category: URL関連
Posted by: kazzz
.htaccessのmode_rewriteでURlを書き換えて、
というURlが使えるようにする方法です。

Category: URL関連
Posted by: kazzz
通常Nucleusの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変換もできます。