Nucleus 管理ページを隠す


Nucleusの管理ページを隠す

www.example.com/blog/にNucleusを置くと、管理ページの入り口は defauletでお約束の、
http://www.example.com/blog/nucleus/
になる。
これじゃ、Nucleusを
http://www.example.com/blog/
でブログを動かしてるのがわかったら、「入り口はこの下 -> nucleus/」ってバレバレではありませんか。

あんまり危機意識がないと見られるのも困るので、せめて

http://www.example.com/blog/abc0001/index.php
みたいに、見つかりにくいURLにしたいもんだ。

確か、config.phpにディレクトリを指定した場所があったので変更する。

// mySQL connection information
$MYSQL_HOST = 'localhost';
$MYSQL_USER = 'sampleadmin';
$MYSQL_PASSWORD = 'sampleadmin';
$MYSQL_DATABASE = 'Nucleus';
$MYSQL_PREFIX = '';

// main nucleus directory
$DIR_NUCLEUS = '/home/example/public/abc0001/'; <- ココ変える

// path to media dir
$DIR_MEDIA = '/home/example/public/media/';

// extra skin files for imported skins
$DIR_SKINS = '/home/example/public/skins/';

// these dirs are normally sub dirs of the nucleus dir, but
// you can redefine them if you wish
$DIR_PLUGINS = $DIR_NUCLEUS . 'plugins/';
$DIR_LANG = $DIR_NUCLEUS . 'language/';
$DIR_LIBS = $DIR_NUCLEUS . 'libs/';

// include libs
include($DIR_LIBS.'globalfunctions.php');
if (!extension_loaded('mbstring')) {
include($DIR_LIBS.'mb_emulator/mb-emulator.php');
}
?>

管理画面にアクセスすると、なんと、画面が崩れてしまった。

ソースを見てみると、
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Test001 - Admin</title>
<link rel="stylesheet" title="Nucleus Admin Default" type="text/css" href="http://www.example.com/blog/nucleus/styles/admin.css" />
<link rel="stylesheet" title="Nucleus Admin Default" type="text/css"
href="http://www.example.com/blog/nucleus/styles/addedit.css" />
<script type="text/javascript" src="http://www.example.com/blog/nucleus/javascript/edit.js"></script>
<script type="text/javascript" src="http://www.example.com/blog/nucleus/javascript/admin.js"></script>
<script type="text/javascript" src="http://www.example.com/blog/nucleus/javascript/compatibility.js"></script>

スタイルシートのパスが通っていない。これじゃ崩れるはず。
config.php以外にURLを設定する場所があるらしい。

ファイルのぞいたがすぐには見つからないので、アプローチをかえる。
nucleuのデータベースを見ると nucleus_configが怪しそう。(phpmyadmin)

早速、ここを http://www.example.com/blog/abc0001/に書き換える。
注意:PluginURL http://www.example.com/blog/nucleus/plugins/
も変えないと、プラグインのリストがでなくなる。

これで、
http://www.example.com/blog/abc0001/
にアクセスすると、いつもの管理画面が表示された。


さて、動いたことは動いたんだけど、一応ファイルでも調べておきたいもんだ。

ADMIN.phpにURLを決めている場所があった。
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo _CHARSET ?>" />
<title><?php echo htmlspecialchars($CONF['SiteName'])?> - Admin</title>
<link rel="stylesheet" title="Nucleus Admin Default" type="text/css" href="<?php echo $baseUrl?>styles/admin.css" />
<link rel="stylesheet" title="Nucleus Admin Default" type="text/css"
href="<?php echo $baseUrl?>styles/addedit.css" />
<script type="text/javascript" src="<?php echo $baseUrl?>javascript/edit.js"></script>
<script type="text/javascript" src="<?php echo $baseUrl?>javascript/admin.js"></script>
<script type="text/javascript" src="<?php echo $baseUrl?>javascript/compatibility.js"></script>

4955: $baseUrl = htmlspecialchars($CONF['AdminURL']); <- これで設定しているようだ
4963: <link rel="stylesheet" title="Nucleus Admin Default" type="text/css" href="<?php echo $baseUrl?>styles/admin.css" />
4964: <link rel="stylesheet" title="Nucleus Admin Default" type="text/css"
4965: href="<?php echo $baseUrl?>styles/addedit.css" />
ほかにも、showlist.phpにあったけど、こっちは見るからにハズレ。

207: $baseUrl = 'index.php?plugid=' . intval($current->pid) . '&action=';

さらに
ADMIN.phpをみると
<td><input name="AdminURL" tabindex="10040" size="40" value="<?php echo htmlspecialchars($CONF['AdminURL']) ?>" /></td>

これみたい。ここで入力してデータベースに入れているのだ。
なんだ、「グローバル設定」の「管理者領域のURL (最後にスラッシュ "/" を付けてください)」じゃあ、ありませんか。(- -);

というわけで、良い子の皆さんは、最初に「グローバル設定」をやって、次にconfig.phpを書き換えてください。

05 Mar, 2008 | mokimoc
« Prev item - Next Item »
---------------------------------------------

Comments



Leave comments

このアイテムは閲覧専用です。コメントの投稿、投票はできません。