こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

モバイルサイトのxhtmlでPHPを動かすときの.htaccess

ご質問です。

モバイルサイトで、ドコモの対応のために「.htaccess」で「AddType application/xhtml+xml .htm .html」を設定していました。
問題なく稼動していましたが、アクセス解析のために「PHP」を動かせるようにする必要がでたため、xhtml内で「<?php print "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>"; ?>」を記述し、「.htaccess」に「AddType application/x-httpd-php .html」を追加しました。

「.htaccess」には下記のように記述されています。

AddTypeapplication/x-httpd-php .html

AddType application/xhtml+xml .htm .html

しかしこれでは、「PHP」がうまく動かず、

AddType application/xhtml+xml .htm .html

AddTypeapplication/x-httpd-php .html

の順で記述すると「xhtml」がおかしくなります。

調べていると「.htaccessではAddTypeapplication/x-httpd-php .htmlだけ記述し、HTTPヘッダでMIMEタイプを指定するためにPHPにて、header()関数で指定する」とありました。↓
header("Content-type: application/xhtml+xml" );

しかし、どこにどう記述してよいのかわからないでいます。
動かしたい「PHP」の内容は以下の通りです。

<?php
function rt_tag($aqid){
$ref = getenv('HTTP_REFERER');
$ref = urlencode($ref);
$my_url = urlencode("//".getenv('SERVER_NAME').getenv('SCRIPT_NAME'));
if (!empty($my_url)) $rt_param[] = "/2=$my_url";
if (!empty($ref)) $rt_param[] = "/4=$ref";
$tag = "<img src=\"http://t7.aqtracker.com/cgi-bin/asp/tagx/h/$aqid";
foreach ($rt_param as $val) $tag .= $val;
$tag .= "/blank.gif?guid=on\">";
echo $tag;
}
$_aqid = "5T555ELHERSGN664E86A";
rt_tag($_aqid);
?>

どう記述を追加すればよいのか教えてくださいますか?
またこれでやりたいことはできるのでしょうか?

よろしくお願い致します。

投稿日時 - 2009-10-18 15:20:48

QNo.5376700

すぐに回答ほしいです

質問者が選んだベストアンサー

header関数は、原則的にあらゆる出力より前にコールされる必要があります。
参考: http://www.php.net/manual/ja/function.header.php

逆にいえば、出力が開始される前ならどこに記述しても大丈夫です。
どのように記述するかですが、これは質問内容にある内容のままプログラムに挿入すればよいです。

投稿日時 - 2009-10-19 12:55:26

補足

ありがとうございました。

その後数日の間、検証してみましたが問題なく稼動しているようです。
ちなみに「body」タグのすぐ下に
<?php
header("Content-type: application/xhtml+xml" );
?>
としておいて、そこからXHTMLでコンテンツを組み「/body」の直前の「div」
タグの中に
<?php
function rt_tag($aqid){
$ref = getenv('HTTP_REFERER');
$ref = urlencode($ref);
$my_url = urlencode("//".getenv('SERVER_NAME').getenv('SCRIPT_NAME'));
if (!empty($my_url)) $rt_param[] = "/2=$my_url";
if (!empty($ref)) $rt_param[] = "/4=$ref";
$tag = "<img src=\"​http://t7.aqtracker.com/cgi-bin/asp/tagx/h/$aqid";​
foreach ($rt_param as $val) $tag .= $val;
$tag .= "/blank.gif?guid=on\">";
echo $tag;
}
$_aqid = "5T555ELHERSGN664E86A";
rt_tag($_aqid);
?>

<?php
$UH2url = '​http://b01.ugo2.jp/?u=5015024&amp;h=6b8f46&amp;ut=2&amp...​
$UH2url .= urlencode(isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'').'|Az|'.(int)($_SERVER['SERVER_PORT']);
$UH2url .= '|'.urlencode($_SERVER['HTTP_HOST']).'|'.urlencode($_SERVER['REQUEST_URI']);
$UH2url .= '|H|&amp;ch=SJIS&amp;sb='.urlencode('[ドイツ式フットケアサロンのボディキューブ]');
print '<img src="'.$UH2url.'" alt="携帯アクセス解析" width="1" height="1" border="0" />';
?>

とふたつ「PHP」のプログラムを入れましたがアクセス解析は問題なく動いています。
こういったやり方は問題ないのでしょうか?

稼動しているとはいえちょっと心配です。

他にいい方法があれば教えていただけますでしょうか?

よろしくお願い致します。

投稿日時 - 2009-10-22 16:36:20

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問