お世話になります。
エックスサーバー上でJavaScriptとPHPを用いたウェブアプリケーションを開発している者なのですが、
特定のHTMLファイル以外のHTMLファイルでPHPスクリプトを実行できるように .htaccess に以下の設定を施しました。
AddHandler x-httpd-php .php .html # PHPを無効にするファイル <Files ~ "hoge.html$"> RemoveHandler .html </Files>
ただし、 hoge.html は underscore.js の Template エンジンによって開かれるHTMLファイルとします。
以下は hoge.html
HTML
1<?php 2 require_once dirname(__FILE__) . '/common.php'; 3 $commonAction = new CommonAction(); 4 $title = $commonAction -> GetTitle(); 5?> 6<html> 7 <meta charset="utf-8"> 8 <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"> 9 <meta property="type" content="article"> 10 <link rel="alternate" hreflang="ja" href="http://ja.example.com/" /> 11 <head> 12 <title><?php echo $title; ?></title> 13 <script type="text/javascript" src="common.js"></script> 14 </head> 15 <body> 16 17 <p><%= text %></p> 18 19 </body> 20</html>
以下は Template エンジンを利用している JS コードです。
Javascript
1var template = _.template(getTemplate('hoge')); // ajax を利用して引数に指定したHTMLファイルにGET送信しています。また、拡張子は省略。 2 3template({ 4 text : document.getElementById('contentEditable'); // <- コンテントエディタブルで編集したHTMLコード 5}); 6 7// 以下はgetTemplate関数 8function getTemplate(filename, extFlag = true, cacheFlag = true) { 9 10 if (!tempCache) { 11 tempCache = {}; 12 } 13 14 if (!tempCache[filename]) { 15 var tempFilename = rootDirectoryPath + directory + 'views/' + filename; 16 if (extFlag) { 17 tempFilename += '.html'; 18 } 19 var tempString; 20 $.ajax({ 21 type: 'GET', 22 url: tempFilename, 23 cache: true, 24 data: '', 25 async: false 26 }).done(function (data) { 27 tempString = data; 28 }).fail(function (data) { 29 console.log('<b>getTemplate Error</b> -> ファイル ( ' + filename + ' ) のリードに失敗しました。'); 30 }); 31 if (cacheFlag) { 32 tempCache[filename] = tempString; 33 } 34 } 35 36 return tempCache[filename]; 37 38}
これで、Templateエンジンによって開かれた hoge.html に記述された PHP スクリプトが実行されないよう
.htaccess に記述しました。
しかし、何故か正規表現やファイル名はあっているはずなのに、 PHPスクリプト が実行されてしまいます。
実行させなくする方法はないでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。