ブログ
modules_changerハックを試してみた 
xoops特有の http://●●.com/modules/blog/ といった「modules」の部分とかを好きな文字列に
リダイレクトするというのがmodules_changerハック。http://●●.com/HP/blog/とかにね。
xoopsでっせぇぇってのが隠せるので、セキュリティ的にも気分的(なんか)にもいいのかな?SEO的にも?
ほんとは simplified_urlハック使いたかったんだけど。。副作用が。。。パネ。(TT)
とりあえず紹介。
注1: modulesそのものを消す等、パスの深さまで変えるのは、副作用の可能性高 要検証
・noneモジュールは非対応
注2: 新規にモジュールをインストールできなくなる可能性
注3: cubeUtilsモジュールを使用時 なんかオートログインが変(クッキー削除が原因?)
注4: htaccessはキャッシュされないので、ページを表示するたびに読み込まれ、あまり多く記述すると表示速度がちびっと遅くなる?
サイトがほとんど完成した状態で導入するのが吉
modules だけを好きな文字列にするハック 簡単
参考元:PEAK XOOPS /modules/ changerのテスト中
mainfile.phpのトップに
if( ! function_exists( 'modules_changer' ) ) {
$_SERVER['REQUEST_URI'] = str_replace( '/HP/' , '/modules/' , @$_SERVER['REQUEST_URI'] ) ;
$_SERVER['HTTP_REFERER'] = str_replace( '/HP/' , '/modules/' , @$_SERVER['HTTP_REFERER'] ) ;
function modules_changer( $s ) {
return str_replace( XOOPS_URL.'/modules/' , XOOPS_URL.'/HP/' , $s ) ;
}
ob_start( 'modules_changer' ) ;
}
XOOPS_ROOT_PATHに放り込む.htaccess
#<modulesURL Hack>modules
RewriteEngine on
RewriteBase /
RewriteRule ^HP/(.*)$ modules/$1 [L]
#</URL Hack>
ドメイン以下のURLそのものを好きな文字列にするハック お勧め
mainfile.php内に追加
if( ! function_exists( 'modules_changer' ) ) {
$GLOBALS['_rewriteRulesFrom'] = array(
'/sitenews/',
'/info/index.html',
'/gallery/',
'/main.css',
'/include/main.js',
);
$GLOBALS['_rewriteRulesTo'] = array(
'/modules/bulletin/',
'/modules/pico/index.php?content_id=1',
'/modules/myalbum/',
'/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<count($GLOBALS['_rewriteRulesFrom']); $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' ) ;
}
XOOPS_ROOT_PATHに放り込む.htaccess
#<URL Hack>RewriteEngine on
RewriteBase /RewriteRule ^sitenews/(.*)$ /modules/bulletin/$1 [L]
RewriteRule ^info/index.html(.*)$ /modules/pico/index.php?content_id=1$1 [L]
RewriteRule ^gallery/(.*)$ /modules/myalbum/$1 [L]
RewriteRule ^main.css$ /xoops.css[L]
RewriteRule ^include/xoops.js$ /include/xoops.js[L]
#</URL Hack>
問題がないか細かく検証した方がいいです。
.htaccessは、プラウザキャッシュされないので、結局、動作を優先するなら、指定を少なめにするか
使うべきではない感じです。
トラックバックpingアドレス
新しくコメントをつける
コメント一覧
カテゴリ一覧
- コラム -0-
- web忘備録 -1-
- xoops関連 -3-
- XHTML・CSS関連 -1-
- ジャバスクリプト・Ajax関連 -1-
- デザイン関連 -0-
- レンタルサーバー -1-
- SEO・SEM(アクセスアップ) -0-
- 日記 -0-
