XOOPSサイトの長いアドレスをすっきり短く整形する

*必須環境 : .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]


mainfile.phpに下記の項目を追加(ファイル先頭の
$GLOBALS['_rewriteRulesFrom'] = array(
    '/news/',
    '/photo/',
    '/comment/',
    '/minibbs/',
    '/bbs/',
    '/forum/',
    '/members/',
    '/sitemap/',
    );
    $GLOBALS['_rewriteRulesTo'] = array(
    '/modules/news/',
    '/modules/myalbum/',
    '/modules/BopComments/',
    '/modules/x_comment/',
    '/modules/bluesbb/',
    '/modules/xoopsmembers/',
    '/modules/sitemap/',
    );

    $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' ) ;

モジュール名及びそれに対応する書き換えたいディレクトリ名はそれぞれ変更すること。

このハックはのぶのぶさんのハックを当サイトに合わせて記載しているだけです。