アプリ版:「スタンプのみでお礼する」機能のリリースについて

jQueryのAjaxでurlをルートディレクトリより上の階層にあるファイルを指定できないのでしょうか?

具体的には以下のような階層になっていてindex.html内で記述されているAjaxでexe/test.phpを呼び出したいと思っています。

サーバールート
├home(ルートディレクトリ)
│└index.html
└exe
  └test.php

index.html内に記述されているjavascript

$.ajax({
 type: 'post',
 url: '../exe/test.php',
 dataType: 'html',
 …
});

これを実行すると、FireBugで「404 Not Found http://www.samplecom/exe/test.php」と出てしまいます。
つまり、'../exe/test.php'と指定しているのにルート直下の「exe/test.php」を指定しているかのような結果になってしまっています。

javascriptではルートディレクトリより上のファイルを指定できないのでしょうか?

A 回答 (3件)

JavaScript (が動作しているブラウザ)からは、


URL でしか他のファイルを参照できません。

URL とサーバー内部のパスは別物ですので、
ご利用しているWebサーバーの仕様を確認してください。

もし仕様が
/home/* => URL は http://www.example.com/homepage/*
/exe/* => URL は http://www.example.com/cgi-bin/*
ならば、以下の様にしてください。
$.ajax({url:'/cgi-bin/test.php', ... })

余談ではありますが

もし仕様が
/home/* => URL は http://www.example.com/*
/exe/* => URL は http://cgi.example.com/*
ならば、クロスドメイン問題が発生するのでご注意ください

この回答への補足

すみません、ホームディレクトリはルートディレクトリの間違いです。

補足日時:2014/01/23 17:19
    • good
    • 0
この回答へのお礼

ありがとうございます。参考になりました。
仕方ないのでexeフォルダをホームディレクトリ(http://www.example.com/)より下に置きます。
セキュリティの観点から重要なphpファイルはホームディレクトリより上の階層に置こうと思いましたがダメみたいですね…。

お礼日時:2014/01/23 17:17

こんにちは。



>ローカルPC上で開発しているときはルートより上を指定しても大丈夫だったので
>サーバーにアップしてから気づきました。

xamppなりで開発環境としてローカルにもWebサーバを作っておいたほうが、確実に開発できますよ。

この回答への補足

すみません、ホームディレクトリはルートディレクトリの間違いです。

補足日時:2014/01/23 17:19
    • good
    • 0
この回答へのお礼

ありがとうございます。
一応XAMPPでやっているのですが、ホームディレクトリより上の階層でもアクセスできてしまいました…。

お礼日時:2014/01/23 17:18

こんにちは。



ルートディレクトリより上ってことは通常のhttpアクセスじゃ見えない領域ってことですよね?
それなら無理です。

ブラウザに直接対象のアドレスを入力して、参照できる範囲しか指定できませんよ。

ルートより上ってことはurlが無いわけですから。
    • good
    • 0
この回答へのお礼

ありがとうございます。
javascriptではルートより上は無理だったのですね。
ローカルPC上で開発しているときはルートより上を指定しても大丈夫だったので
サーバーにアップしてから気づきました。
仕方ないのでphpをルートより下に置くことにします。

お礼日時:2014/01/22 17:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!