ところで ZeRo さんも yama さんもご自分のサーバーなどでは確認できないんでしょうか。・・・きょうはすこし早く寝ようと思うので明日になるかもしれません。
# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1?q=$1 [L,QSA]
# The Friendly URLs part RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1?q=$1 [L,QSA]
index.php/$1とすれば一応PATH_INFOは渡ります。
が、BBCLONEのグローバル統計ではリンク先がhttp://PATH_INFOになっちゃいます。
ホスト名を付けたリンクにすれば使えそうなんですが、これはBBCLONEの方の修正をすることになるかと思います。
ということで、相性的にはMODxとBBCLONEはイマイチ悪そうですねぇ。
<?php
$_SERVER['PATH_INFO'] = '/xxxx/';
ECHO 'PATH_INFO->'.$_SERVER['PATH_INFO'].'<br />';
define("_BBC_PAGE_NAME", "test");
define("_BBCLONE_DIR", "bbclone/");
define("COUNTER", _BBCLONE_DIR."mark_page.php");
if (is_readable(COUNTER)) include_once(COUNTER);
?>
$REQUEST_URI = $this->filter_uri($filename, $PATH_INFO , $PHP_SELF);
$HTTP_USER_AGENT = !$HTTP_USER_AGENT ? "unknown" : $HTTP_USER_AGENT;
// Use a page name even if the user didn't specify it
$page = defined("_BBC_PAGE_NAME") ? bbc_clean(_BBC_PAGE_NAME, $BBC_SEP) : $this->auto_page_name($REQUEST_URI);
// "unknown" is meant as placeholder for the hostname, which will be processed at a different location
$this->string = $time.$this->sep.$prx_addr.$this->sep.$REMOTE_ADDR.$this->sep."unknown".$this->sep
.$HTTP_USER_AGENT.$this->sep.$HTTP_REFERER.$this->sep.$REQUEST_URI.$this->sep.$page."\n";
今日は朝の10時より↑この辺を見ていました。Gyao の アンドロメダ シーズン1と画面を切り替えながら・・・ :’(
このREQUEST_URIが書き込まれるPATHだと思われますので、ここら辺りをデバック出力すれば見えてくるかと思われます。
いずれにしてもBBCLONE周りなので・・・
$REQUEST_URI = $this->filter_uri($filename, $PATH_INFO , $PHP_SELF); ↓ $REQUEST_URI = $_SERVER["REQUEST_URI"];
filter_uri() はセキュリティーのためではなく index.php/123/456.html から /123/456.html を取り出すための関数のようです。
お。もうほぼ解決みたいな感じですが。このfilter_uri()っていう関数通さなくても大丈夫ですか?
実際のコード見てないですが、脆弱性対応な処理が入ってたりしないでしょうか?
単純にスニペットを作るスキルがないことです。また環境変数の退避が必要であることからスニペットだけでは解決できないはずです。呼び出し部分はテンプレートのフッターに入れてもよさそうですがあまり効率がいいとは思えません。さらに index.php の中でまとまっているほうが見渡しがいいというのが理由です。
このスレを最初に見たとき、「なんでbbcloneを呼び出す数行のスニペットを作ってテンプレートの最後に入れないのだろう」という素朴な疑問が沸き、以下の順序で私も試してみました。結果はすべてNG。DEBUGモードで動かすと必ず「bbcloneの処理の限界です。このエラーがなくなるまで呼び出し位置を変えてください。本件は次期バージョンで対処予定」みたいなエラーが出てどうにもなりませんでした。動いてない現状では、私が根本的なミスを犯している可能性は依然残ってますが、この時点で、dainitiさんが2ヶ月も苦労され、このスレがindex.phpの改造から話が始まっているのかが読み取れた気がしました。
$HTTP_USER_AGENT = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $HTTP_REFERER = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $PHP_SELF = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : '';
$_SERVER['HTTP_USER_AGENT'] = $HTTP_USER_AGENT; // 必要な環境変数を復活します
$_SERVER['HTTP_REFERER'] = $HTTP_REFERER;
$_SERVER['PHP_SELF'] = $PHP_SELF;
$page_title=$modx->documentObject['pagetitle']; // ページタイトルを取得します
$bbclone_path=$modx->config['$base_path']."bbclone/"; // bbclone のパスにあわせてセットしてください
define("_BBC_PAGE_NAME", "$page_title");
define("_BBCLONE_DIR", $bbclone_path);
define("COUNTER", _BBCLONE_DIR."mark_page.php");
if (is_readable(COUNTER)) include_once(COUNTER);