XOOPSサイトの長いアドレスをすっきり

Date
2005-11-24 (木)
Category
XOOPS関連

普通にXOOPSサイトを構築するとアドレスは
http://example.com/modules/newbb/ と言う風に必ずmodulesが入ってしまうが、これをなくして少しでもシンプルにする方法がのぶのぶさんのサイトにありました。

今まではGIJOEさんの「modules を好きな文字列に変更する」ハックを利用していたんですが乗り換えました。

おまけに各モジュールのディール名も変更出来るので、アドレスを見ただけではXOOPSで構築しているのをかなり隠蔽できる。
ただテーマの骨組みがどう見てもXOOPS (T_T)
http://memo.ms/

利用するには鯖側で.htaccessの使用が可能な事とmod_rewrite モジュールが組み込まれている事が前提。

.htaccessに下記の項目を追加

RewriteEngine on
RewriteRule ^news/(.*)$ /modules/news/$1 [L]
RewriteRule ^photo/(.*)$ /modules/myalbum/$1 [L]
RewriteRule ^comment/(.*)$ /modules/BopComments/$1 [L]
RewriteRule ^minibbs/(.*)$ /modules/x_comment/$1 [L]
RewriteRule ^bbs/(.*)$ /modules/bluesbb/$1 [L]
RewriteRule ^forum/(.*)$ /modules/newbb/$1 [L]
RewriteRule ^members/(.*)$ /modules/xoopsmembers/$1 [L]
RewriteRule ^sitemap/(.*)$ /modules/sitemap/$1 [L]

上記の例では
http://example.com/modules/newbb/ → http://example.com/forum/ となる。
当然forumと言う所は任意で決められる。

mainfile.phpに下記の項目を追加

$GLOBALS['_rewriteRulesFrom'] = array(
'/news/',
'/photo/',
'/comment/',
'/minibbs/',
'/bbs/',
'/forum/',
'/members/',
'/sitemap/',
'/freeserver/',
'/main.css',
'/include/main.js',

);
$GLOBALS['_rewriteRulesTo'] = array(
'/modules/news/',
'/modules/myalbum/',
'/modules/BopComments/',
'/modules/x_comment/',
'/modules/bluesbb/',
'/modules/xoopsmembers/',
'/modules/sitemap/',
'/modules/freeserver/',
'/xoops.css',
'/include/xoops.js',

);

$GLOBALS['_abs_offset'] = preg_replace('/https?:\/\/'.$_SERVER["HTTP_HOST"].'/','',XOOPS_URL);
$GLOBALS['_rewriteRulesTo1'] = preg_replace('/^(.*)$/e','"!('.XOOPS_URL.'|\"".$GLOBALS["_abs_offset"]."|\'".$GLOBALS["_abs_offset"].")".preg_quote("\1","!")."!"', $GLOBALS['_rewriteRulesTo']);
$GLOBALS['_rewriteRulesFrom1'] = preg_replace('/^(.*)$/','\\\1\1',$GLOBALS['_rewriteRulesFrom']);

function modules_changer( $s ) {
$s = preg_replace($GLOBALS['_rewriteRulesTo1'],$GLOBALS['_rewriteRulesFrom1'], $s);
for($i=0; $i $s = preg_replace( '/('.preg_quote(XOOPS_URL,'/').'|"|\')'.preg_quote($GLOBALS['_rewriteRulesTo'][$i],'/').'/' , "\\1".$GLOBALS['_rewriteRulesFrom'][$i] , $s ) ;
}
return $s;
}
if (empty($_SERVER['REDIRECT_URL']) || ($_SERVER['REDIRECT_URL'] == $_SERVER['REQUEST_URI'])) {
if (empty($_SERVER['REDIRECT_REDIRECT_STATUS'])) {
if (($_changer_url=modules_changer('"'.$_SERVER['REQUEST_URI'].'"')) != '"'.$_SERVER['REQUEST_URI'].'"') {
//if request url is old url redirect to new
header('Location: ' . str_replace('"','',$_changer_url));
}
}
}
$_SERVER['REQUEST_URI'] = str_replace( $GLOBALS['_rewriteRulesFrom'],$GLOBALS['_rewriteRulesTo'], @$_SERVER['REQUEST_URI'] ) ;
$_SERVER['HTTP_REFERER'] = str_replace($GLOBALS['_rewriteRulesFrom'], $GLOBALS['_rewriteRulesTo'], @$_SERVER['HTTP_REFERER'] ) ;

ob_start( 'modules_changer' ) ;


手を加えるのは赤字の部分だけ

Comment:0

Comment Form

Remember Me?

Trackback:0

TrackBack URL for this entry
http://mynoah.net/mt-tb.cgi/85
Listed below are links to weblogs that reference
XOOPSサイトの長いアドレスをすっきり from おじさんの備忘録

Return to Page Top