55

I'm loading a html file hosted on the OS X built in Apache server, within that file I am linking to another html file in the same directory as follows:

<a href="2ndFile.html"><button type="submit">Local file</button>

This works. However (for reasons too lengthy to go into) I am experimenting using the file: scheme instead, however I cannot get anything to work. Here is how I am re-writing the above line using file:

<a href="file://192.168.1.57/~User/2ndFile.html"><button type="submit">Local file</button>

(192.168.1.57 is my current IP address)

Changing it to the following does also not work:

<a href="file://Name-Of-MacBookPro/~User/2ndFile.html"><button type="submit">Local file</button>

But the file cannot be found, how should it be specified using the file: scheme?

4

5 に答える 5

73

file:URLスキームは、クライアントマシン上のファイルを参照します。file:スキームにホスト名はありません。ファイルのパスを指定するだけです。したがって、ローカルマシン上のファイルはになりますfile:///~User/2ndFile.html。3つのスラッシュに注意してください。URLのホスト名部分は空であるため、パスの先頭にあるスラッシュは、URLの先頭にある二重スラッシュの直後に続きます。また、ユーザーのパスを拡張する必要があります。URL~で展開されません。file:したがって、(file:///home/User/2ndFile.htmlほとんどのUnixでは)、file:///Users/User/2ndFile.html(Mac OS Xでは)、またはfile:///C:/Users/User/2ndFile.html(Windowsでは)が必要になります。

多くのブラウザは、セキュリティ上の理由から、サーバーからロードされたファイルからローカルファイルへのリンクを許可していません。したがって、HTTP経由でロードされたページからこれを実行できない場合があります。file:他のローカルページからのURLにのみリンクできる場合があります。

于 2012-10-03T15:33:10.227 に答える
3

「ファイル」プロトコルはネットワークプロトコルではありません。したがって、file://192.168.1.57/~User/2ndFile.htmlはあまり意味がありません。

問題は、最初のファイルをどのようにロードするかです。それは本当にWebサーバーを使用して行われますか?本当にのように聞こえません。もしそうなら、なぜ同じプロトコル、おそらくhttpを使用しないのですか?プロトコルを単純に切り替えて、2つの異なるプロトコルを同じように使用することは期待できません...

最初のファイルは実際にはApacheサーバーを使用してロードされていると思いますが、ファイルを開くだけですか?href = "2ndFile.html"は、「相対URL」を使用しているため、単純に機能します。これにより、ブラウザは最初の(現在の)ファイルを取得した場所と同じプロトコルとパスを使用します。

于 2012-10-03T15:31:11.233 に答える
3

「file://」URLプロトコルは、ローカルマシンのファイルシステム内のファイルを見つけるためにのみ使用できます。このhtmlコードはブラウザによって解釈されるため、「ローカルマシン」はブラウザを実行しているマシンです。

ファイルが見つからないというエラーが発生する場合は、ファイルが見つからないことが原因であると思われます。ただし、ブラウザのセキュリティ上の制限である可能性もあります。一部のブラウザでは、ファイルシステム以外のhtmlページからファイルシステムファイルを参照できません。ブラウザを実行しているマシンのコマンドラインからファイルパスを使用して、これがブラウザの制限であり、正当な欠落ファイルではないことを確認できます。

于 2016-12-07T18:47:56.443 に答える
0

以前にも同様の問題がありましたが、私の場合、ファイルは別のマシンにあったため、ネットワークドライブzをファイルのあるフォルダーの場所にマップし、tomcatでコンテキストを作成して、Webプロジェクトでコンテキストを介してHTMLファイルにアクセスできるようにしました。

于 2018-05-15T05:48:39.160 に答える
0

apacheについては、SymLinkを検索するか、シンボリックリンクを使用してOSを介して解決するか、Linuxでライブラリリンクなどを設定してください。

私の答えは、Windows10に特化した1つの方法です。

したがって、私の方法では、ネットワークドライブをU:/にマッピングします(たとえば、GoogleドライブにG:/を使用します)

開いcmdて入力しますhostname(結果の例:LAPTOP-G666P000、代わりにIPを使用できますが、ネットワークが停止した場合は、静的ホスト名を使用して自分自身を識別する方が理にかなっています)

Windows_key + E>>を押しright click 'This PC'ますN (これはネットワークドライブのマップであり、ネットワークの場所を追加するものではありません)

デスクトップのショートカットを右クリックする場合は、Nキーを押してから次のように入力する必要があります。

U:またはG:またはまたは必要なものを入力Z:してください。住所の例:\\LAPTOP-G666P000\c$\Users\username\

その後、あなた<a href="file:///u:/2ndFile.html"><button type="submit">Local file</button>はあなたの質問のように使うことができます


関連:この方法をFTPに使用して、同じネットワーク上の異なる相対パスに複数のドライブをセットアップすることもできます。

related2:http://localhost/c$以前にも一部のWAMP / Apacheサーバーでetcを使用.htaccessしたことがあります。制御/セキュリティに使用できますが、ライブ/本番マシンでは使用しないことをお勧めします。

于 2020-10-29T04:28:18.163 に答える