2011-06-21 18 views
5

のために私たちは今、書き換えルートディレクトリのパス「/」Javascriptを

RewriteBase "/to/some/new/directory" 

を持っているの.htaccessに

$_SERVER['DOCUMENT_ROOT'] = "to/some/new/directory"; 
//Now the "/" which represent the ^(above) path 

を使用してPHPのドキュメントルートディレクトリのパスを変更することができますが、私はルートを変更する必要がありますjavascriptで使用するディレクトリパス。どうやってするの?

現在、私は私があなたのために、シナリオについて少し教えてくださいだと思う私のパーソナライズされたルートディレクトリへの静的パスを含む変数を宣言して

var root = "../to/new/path"; 
document.location = root+"/somepage.php"; 

シナリオ

としてそれを使用していますみんなは私のアイデアをキャッチする

既定のWebルートディレクトリ

http_docs/ 
それがメインフォルダ今
http_docs/application <-- contains the actual application 
http_docs/js <-- contains the script 
http_docs/index.html 

を含ん内

は、アプリケーションは、「/」/いくつかの/パスで表しますでアクセスした場合、新しいコンテンツ、またはその他のリソースを、読み込み、更新、編集のためにAjaxの機能が含まれています/ I /ない/アプリケーション/いくつかの/パス/ I /呼ばれると呼ばれる、

は私が

var root = "application/"; 

のような静的変数を定義して、どこかに

のようにそれを使用することができ、この問題 の周りに来て
$.post(....., function(data) { $(body).append("<img src='"+root+"resources/img1.jpg"); }); 

しかし、1回の使用では、パスを静的として定義するのは大したことではないかもしれませんが、アプリケーションが大きくなり、特定の変更によってjs部分に与えるすべてのパスが変更されます。 <img src="/resources/img1.jpg" />

私はこの質問を説明するために最善を尽くしましたが、まだ理解できない場合は、コミュニティにしてください、彼らが理解するのを助けることができます私は考えて、それは賢明だろう。私はあなたの質問を編集することを歓迎します。

+4

質問は何ですか? 「ルートディレクトリを変更する」とはどういう意味ですか? –

+0

どちらもサーバー側で処理されます。それで、あなたはJSと解決したい取引は何ですか? –

+0

@Stein G. Strindhaug、私はjavascriptで使用するためにルートディレクトリのパスを変更する必要があることを伝えるよりもはるかに分かりません – Starx

答えて

5

編集:JavaScriptは、あなたがimgタグを挿入し、相対URLを使用する場合、彼らはインデックスファイルのパスからの相対になり、index.htmlファイルからインクルードと呼ばれていると仮定すると、更新質問 にお答えしようとすると、 。だから<img src='application/resources/img1.jpg'>はうまくいくはずです。スクリプトがいくつかのサブレベル(例えば、 "application/etc/etc2/somePage"ページの場合)で動作するはずです。html "には" application/resources/"の画像が必要です)絶対URLを使用する方が簡単かもしれません。アプリケーションの" root "への絶対URLを保持するphpによって生成されたすべてのページにjavascriptブロックを含めることができます。あなたがルートをハードコーディングする必要があるかもしれませんURLが(PHPに表示されているものの外でのApacheなどで)再マップ/翻訳された場合getTheRootUrl()は。あなたが必要なルートURLを与える方法やサーバー変数です

<!-- included by php in all html pages, e.g. in defautlHeadter.php --> 
<script type="text/javascript"> 
    var rootUrl = "<?= getTheRootUrl() ?>"; 
</script> 

URLをphpメソッドで指定しても、少なくともルートディレクトリを変更すると変更するファイルは1つだけになります

次に、ルートURLを使用して、アプリケーション/ウェブサイトの絶対パスをrootUrl + "/some/relative/path"をアプリケーションのどこにでも置くことができます。

+0

私は質問を言い換えようとしています – Starx

+0

このアンヴェルは私にとっては役に立たない、とにかく... -1 – Starx

+0

なぜこの答えは役に立つと思いますか? @Voter、please、私は知りたいです...この回答は私の質問にどのように役立つのですか? – Starx

-1

私はかつてデモの目的のためにアップハッキング、...私もこの

static function GetRelativePath($path) 
{ 
    $dr = $_SERVER['DOCUMENT_ROOT']; //Probably Apache situated 

    if (empty($dr)) //Probably IIS situated 
    { 
     //Get the document root from the translated path. 
     $pt = str_replace('\\\\', '/', Server::GetVar('PATH_TRANSLATED', 
      Server::GetVar('ORIG_PATH_TRANSLATED'))); 
     $dr = substr($pt, 0, -strlen(Server::GetVar('SCRIPT_NAME'))); 
    } 

    $dr = str_replace('\\\\', '/', $dr); 

    return substr(str_replace('\\', '/', str_replace('\\\\', '/', $path)), strlen($dr)); 
} 

のようなものを使用

window.app_absolute = '<?php echo GetRelativePath(dirname(__FILE__)); ?>' 

を設定するには、次のようにこれらの線に沿って何かを何かをしました。

+1

あなたの答えをもう少し詳しく説明できますか? 「それらの線に沿った何か」???????????? – Starx

+0

申し訳ありませんが、私はいくつかのPHPを書いたが、フィルタによって消去されました。私はいくつかの詳細と答えを更新しました。 – Xedecimal

+0

だから、 'window.app_absolute'には何が入っていますか?現在のファイル、相対パスだと思います – Starx

関連する問題