[(site_url)]に異常な値

質問全般・改善要望
返信する
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

[(site_url)]に異常な値

投稿記事 by kazuike »

-----
ご利用のサーバ:KDDI S20
MODXのバージョン:1.0.6J-r8
PHPのバージョン:5.2.8
MySQLのバージョン:5.0.45
ブラウザ: Windows7 IE9、iPhone、Android
-----

CSSが効かず、リンクもすべて切れた状態になっていたページがあり、
ソースを見たところベースタグが

コード: 全て選択

<base href="http:/">
となっていました。

フレンドリーURLを使用するため、
各種テンプレートに

コード: 全て選択

<base href="[(site_url)]">
のコードを入れています。

他のページは正しいURLが入っていたのですが、
なぜか、このページだけ[(site_url)]に異常な値が入っていました。

サイトをリフレッシュすれば、とりあえずの回避はできそうですが、
再発を防止したいので、なんとか原因をつきとめられないかと思っています。

どんなことでも良いので、何か参考になりそうな情報はありませんでしょうか?
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: [(site_url)]に異常な値

投稿記事 by kazuike »

補足です。

グローバル設定は、以下のようになっています。
・サイトのURL:空欄
・ベースURL:「/」

また、当該リソースの設定は、以下のようになっています。
・キャッシュ制御を行なう:「はい」
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: [(site_url)]に異常な値

投稿記事 by yama »

サイトのURLが空欄の場合はsite_urlを動的に生成しますが、この処理はmanager/includes/initialize.phpで行なっています。
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: [(site_url)]に異常な値

投稿記事 by kazuike »

ありがとうございます。

とりあえず、再現できそうな気がしないので、
ソースを追ってみました。

assign_site_urlの

コード: 全て選択

	$site_url = $scheme . $host . $base_url;
	return rtrim($site_url,'/') . '/';
を見る限り、
base_urlは「/」のはずなので、

コード: 全て選択

$host = $_SERVER['HTTP_HOST'];
が、
空か、「:」か「/」の文字のみだった場合に、
[(site_url)]が「http:/」になるということはわかりました。

どういう状況になると、こういうことが起こるのかなぁ…???
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: [(site_url)]に異常な値

投稿記事 by kazuike »

壊れたキャッシュが生成された時刻のアクセスログを確認すると、
********.compute.amazonaws.com
からの「HEAD」リクエストでした。

もしかして、
HEADリクエストに対して(もしくは、ボットに対して)は、
$_SERVER['HTTP_HOST']
が空になるとかあるのかなぁ???

ちなみに、
HEADリクエストの場合でも、MODXはページを生成して返すんですよね?
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: [(site_url)]に異常な値

投稿記事 by yama »

HEADリクエストのことをよく知らないので調べてみましたが、GETやPOSTのようなものなんですね。GETに近いけど本文は返さない、みたいな。
initialize.phpではなくパーサ本体に入ってからの処理になりますが、おそらく想定外の挙動になると思います。(でも今回の件とは関係なさそう)
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: [(site_url)]に異常な値

投稿記事 by kazuike »

さらに補足です。

問題が起こったページは、サイトのトップページで、
問題のキャッシュが生成される数分前にもアクセス「GET / HTTP/1.1」があり、
この時間帯、管理操作は行っていないので、
「********.compute.amazonaws.com」からの「HEAD / HTTP/1.0」で、
キャッシュが生成されているのも不思議です。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: [(site_url)]に異常な値

投稿記事 by kazuike »

この件、後になって気づきました。f(^^;;

HTTP_HOSTって、
アクセス側のHTTPリクエストヘッダ「Host」の情報でしたね。

実際、ツールを使って「Host」に変な値を入れてリクエストしたところ、
「[(site_url)]」は変な値になりました。

HTTP_HOSTが使えないからといって、
SERVER_NAMEもバーチャルドメインでは使えなかったりするので…

結局
グローバル設定「サイトのURL」の設定で対応しました。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
返信する