URIから「/modules/」という文字列を削る の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- URIから「/modules/」という文字列を削る へ行く。
- URIから「/modules/」という文字列を削る の差分を削除
*/modules/ について [#m9b518dd] XOOPSというとこの文字列を思い出す人も多いのではないだろうか。別にXOOPS界隈から生まれた造語というわけではなく、XOOPSの「X」という文字すら入っていないのに、これを見るだけでXOOPSを連想するというのは不思議である。 昔はこれが入っているとXOOPSを使っているのがわかるから消したいという人が多かったが、最近はサイト閲覧者にとって不必要な情報を持つURIのディレクトリは変更するか削るべきという流れになっている。どちらにしろ、気になるのであれば削除してもいいと思う。 **まずmainfile.phpをハックする [#j6943d94] これはプリロードでは解決しないのでファイルに手を加えることになる。 まず、mainfile.phpに以下のコードを挿入する。 #pre{{ $GLOBALS['_rewriteRulesFrom'] = array( '/example/', ); $GLOBALS['_rewriteRulesTo'] = array( '/modules/example/', ); $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' ) ; }} 挿入場所だが、mainfile.phpの上の方に英語の文章がずらずらと書かれている、 #pre{{ <?php // $Id: mainfile.dist.php,v 1.1 2007/05/15 02:34:29 minahito Exp $ // ------------------------------------------------------------------------ // // XOOPS - PHP Content Management System // // Copyright (c) 2000 XOOPS.org // // <http://www.xoops.org/> // // ------------------------------------------------------------------------ // // This program is free software; you can redistribute it and/or modify // // it under the terms of the GNU General Public License as published by // // the Free Software Foundation; either version 2 of the License, or // // (at your option) any later version. // // // // You may not change or alter any portion of this comment or credits // // of supporting developers from this source code or any supporting // // source code which is considered copyrighted (c) material of the // // original comment or credit authors. // // // // This program is distributed in the hope that it will be useful, // // but WITHOUT ANY WARRANTY; without even the implied warranty of // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU General Public License for more details. // // // // You should have received a copy of the GNU General Public License // // along with this program; if not, write to the Free Software // // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // ------------------------------------------------------------------------ // }} この下辺りがいいだろう。 次に挿入するコードの一番上、 #pre{{ $GLOBALS['_rewriteRulesFrom'] = array( '/example/;', ); $GLOBALS['_rewriteRulesTo'] = array( '/modules/example/;', ); }} ここの&color(Red){''/example/''};と&color(Red){''/modules/example/''};のところに/modules/を消したいモジュールのディレクトリ名を入れる。たとえば、d3forumであれば、 #pre{{ $GLOBALS['_rewriteRulesFrom'] = array( '/d3forum/', ); $GLOBALS['_rewriteRulesTo'] = array( '/modules/d3forum/', ); }} こんな感じになるだろうか。上ではわかりやすいようにディレクトリ名を合わしているが、必ずしも合わせる必要はなく、 #pre{{ $GLOBALS['_rewriteRulesFrom'] = array( '/bbs/', ); $GLOBALS['_rewriteRulesTo'] = array( '/modules/d3forum/', ); }} などとしても構わない。複数設定するときは、 #pre{{ $GLOBALS['_rewriteRulesFrom'] = array( '/bbs/', '/blog/', ); $GLOBALS['_rewriteRulesTo'] = array( '/modules/d3forum/', '/modules/d3blog/', ); }} こんな風に下に足していけばいい。元のディレクトリ名と短くするディレクトリ名は必ず対にする。 これでXOOPSが出力するアドレスは以下のようになる。 #pre{{ http://example.com/modules/d3forum/ ↓ http://example.com/bbs/ }} **続いて.htaccessにmod_rewriteの設定を加える [#f4141971] このままだとアクセスしても404エラーが出るだけなので、mainfile.phpがあるディレクトリの.htaccessにmod_rewriteの設定を書き込む。仮に/modules/d3forum/を/bbs/としたということであれば、 #pre{{ RewriteEngine On RewriteRule ^bbs/(.*)$ /modules/d3forum/$1 [L] }} この二行を加えよう。以上でカスタマイズ完了である。
[PR]