web-dev-qa-db-ja.com

asp.netのファイルパス(URL)で./、../、../../、〜/が異なります

スクリプトファイルがあります。

<script src="~/Scripts/angular.js"></script>

パスが~/Scriptであることを確認してください。しかし、../../ではなく~/と入力した場合も、プロセスは同じように機能します。

次のような私のウェブサイトのURL:https://sample.com/Scripts/angular.js

Scriptsの前に../../を入力した場合は、以前のURL(https://sample.com/Scripts/angular.js)が自動的に変更されます。

URLプロセスとは何ですか?そして、どのように自動的に変更できますか? ./, ../ , ../../ , ~/ ,/Scripts ,Scriptsの違いについて教えてください

15

これらのパスコンポーネントは、特定の意味を持つショートカットです。

  • .は現在のパスレベルを意味します(つまり、index.aspxを使用していて、./style.cssを参照する場合、後者は前者と同じフォルダーにある必要があります)
  • ..は1パス上のレベルを意味します(つまり、/somefolder/index.aspxを使用していて../style.cssを参照する場合、後者はsomeFolder親フォルダーにある必要があります。 )
  • /はルートレベルを意味します(つまり、/style.csshttp://www.mysite.com/style.cssと同じです)
  • ASP.NETの~は、サーバー側のアプリケーションルートを意味します(つまり、~/index.aspxは、アプリケーションのルートにあるindex.aspxファイルのURLに変換されます)

ここで注意すべきことがいくつかあります。

  • serverパスとclientパスには違いがあります。たとえば、Webブラウザーの観点からは、「アプリケーションルート」はありません。 Webブラウザーは~の処理方法を認識しません。これは、サーバー側コンポーネントで前処理されたパスでのみ使用できます。サーバー側のコンポーネントは、Webサーバーに対するアプリケーションの現在の場所に基づいて、それをクライアントから見えるパスに変換することを知っています。
  • 親パス指定子(..)には制限がありません。ルートの親はルートと見なされます。したがって、http://www.mysite.com/someFolder/index.aspxを使用していて、../../../../style.cssを参照すると、http://www.mysite.com/style.cssに移動します。
  • ブラウザはパスも変換します。これは、「ページソース」と「DOM」の違いの1つです。ページソースに../somePage.aspxへの参照が含まれている可能性がありますが、マウスでポイントすると、ブラウザはhttp://www.mysite.com/somePage.aspxであることを示します。これは、ブラウザが前者の相対パスを後者の絶対パスに変換したためです。
23
David

どれどれ...

 .    = this directory
 ..   = the parent directory
 ../  = the parent directory
 ~/   = the user's home directory or the application's, in ASP
 /    = the root directory

 ../../ = the parent's parent directory 

等々。

ところで、これはすべてのLinux/Unixシステムで機能します。

0
opalenzuela