最後に、特定のWebサイトにJavaScriptを適用するために、テストサブディレクトリで正常に動作するコードを書きました。しかし、これをWebサイトに展開すると、私は問題に遭遇しました。問題は、ディレクトリ内にないスクリプトファイルを使用しようとしているときや、呼び出し元のページがどこにあるサブディレクトリを使用しようとしているときにユニークなように見えます。新しい機能がサイト全体に必要となり、ディレクトリ構造が動的に変化するため、ここで取り入れる必要のない他のメカニズムに基づいています。トップレベルのスクリプトを呼び出す能力が不可欠です。JavaScript「AH01215:(8)Exec形式のエラー」「Apacheより前のスクリプト出力の終了」
したがって、問題を明らかにするために、2行の非常に単純なJavaScriptをすべて削除しました。呼び出し元のHTMLが存在するディレクトリ内のファイルに含まれている場合、それが動作しているか、そこからのサブディレクトリであるか、別の場所へのリンクを介して同じディレクトリで参照していれば問題ありません。しかし、私は試してみて、他の方法でスクリプトファイルを参照する場合、それはで失敗します。
ここ[Thu Dec 08 12:08:26.643037 2016] [cgi:error] [pid 27403] [client xx.xx.xx.xx:46247] AH01215: (8)Exec format error: exec of '/usr/www/http/js/test.js' failed, referer: http://example.com/test/jstest.html [Thu Dec 08 12:08:26.643548 2016] [cgi:error] [pid 27403] [client xx.xx.xx.xx:46247] End of script output before headers: test.js, referer: http://example.com/test/jstest.html
、もちろん、XX.XX.XX.XXは、サーバーのIPで、「example.com」問題のドメインであり、パス '/ usr/www/http'は、このドメインのWebサイトからApacheが提供する最上位ディレクトリです。
私はこれに関する多くの資料を読んできましたが、私はApache構成ファイルが重要であることを知っています... ScriptAliasを設定しようとしましたが、それについていくつかの質問があります:
テストを少し簡単にするために、私はさまざまなディレクトリ内の同じ名前のファイルでほぼ同じコードの複数のインスタンスを作成し、内容を少し変更して、どのような場所がどのような場所その間、Apacheのログを見ている間に、これらのファイルの例を次に示します。
var myHeading = document.querySelector('h2');
myHeading.textContent = 'website top level js dir';
明らかに、私は場所が何であるかと一致するようにtextContentを変更していました。
HTMLの場合、呼び出しページがtest.jsと同じディレクトリにあるか、親ディレクトリにあるか、test.jsへのリンクがあった同じディレクトリまたはサブディレクトリ:
<script src="/js/test.js"></script>
<script src="/usr/WWW/http/js/test.js></script>
<script src="http://example.com/test/js/test.js"></script>
:HTMLで
<script src="test.js"></script>
<script src="js/test.js"></script>
<script src="http://example.com/test/js/test.js"></script>
は、これらのような任意の参照は、常に呼び出し元のHTMLは、同じディレクトリまたは親ディレクトリになかったように私はそう長くしようとした何に関係なく、失敗しました
関連するディレクトリとファイルはすべて私の所有です個人UIDとGID(いつものように)、その権限はすべて755です。
(この上も試したのバリエーション)として定義されたグローバルScriptAliasもあります:
ScriptAlias /js/ "/usr/www/js/"
は、仮想ホスト定義で別のScriptAliasのエントリーがあります - それは何もしない場合は全く分かりません!
OK、私はアイデアの出です!
最も簡単に入れ