🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Q&A

解決済

3回答

366閲覧

修正したコードを別フォルダでテストアップしても元ファイルが参照されてしまう

piiisan

総合スコア6

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

0グッド

0クリップ

投稿2019/10/29 14:57

編集2019/10/30 02:15

当方コーディング初心者で初歩的な質問でしたら申し訳ございませんが、よろしくお願いいたします。

サイトのコード修正をお願いされ、cyberduckでテストアップをした物を確認してもらうためのサイトのURLを提出したいのですが、うまく表示されません。

FTPでドメインフォルダ内に「test」フォルダを作成しそちらにアップロード致しましたが、
https://(ドメイン)/test/
でアクセスしてもドメインフォルダのindex.htmlの内容が表示されてしまいます。

調べても
testのフォルダ内index.htmlを配置しているか
などの情報しか見当たらなく困っております。

ちなみにサーバーはへテムルです。

ご教授いただけましたら幸いです。
よろしくお願いいたします。

追記

testディレクトリの下にlndex.htmlは置いてある状態です。
その他のtestディレクトリの下にはcssやjsやimageファイルがフォルダとして置いてあります。
また他にもpartsというフォルダもあり、その中に複数のhtmlファイルがあります。

test/ディレクトリ直下のindex.htmlの中で

<?php include ($_SERVER['DOCUMENT_ROOT'] .'/parts/◯◯◯.html'); ?>

の記述がされていて、各htmlファイルの内容を呼び出して表示させる形になっています。
コードの修正をした部分はこちらのpartsディレクトリ下のhtmlファイルです。

「うまく表示されない」というのはドメインフォルダ直下のindex.htmlでincludeで呼び出しているファイルがtestディレクトリ内の修正後のファイルではなくドメイン直下のindex.htmlファイルを呼び出している状態になっています。

追記

<?php include ($_SERVER['DOCUMENT_ROOT'] .'/parts/◯◯◯.html'); ?>

ですが、これだとあくまで $DOCUMENT_ROOT を基点としているように見えるので、test/ 下は参照されないのではとご指摘いただき<?php include ($_SERVER['DOCUMENT_ROOT'] .’/test/parts/◯◯◯.html'); ?>
に変更いたしました。

▶︎test/Index.html

<!DOCTYPE html> <html><head> <meta charset="UTF-8"> <body> <?php include ($_SERVER['DOCUMENT_ROOT'] .'/test/parts/head1.html'); ?> </body> </html>

▶︎test/parts/head1.html

<p>こちらは修正後です</p> <img src="/images/tellink.png" />

▶︎test/images/tellink.png
tellink.png

上記の内容で再度アップロードしましたが、tellink.pngがメインディレクトリ/images/tellink.pngを呼び出してしまいます。
head1.htmlはtest/parts/head1.htmlを呼び出せています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

▶︎test/parts/head1.html

<p>こちらは修正後です</p> <img src="/images/tellink.png" />

上記の内容で再度アップロードしましたが、tellink.pngがメインディレクトリ/images/tellink.pngを呼び出してしまいます。

そりゃ imgタグのsrcに"/images/tellink.png" とサイトルートからの絶対pathで記載しているのでそれを参照しますよ。
/test からの相対pathで "images/tellink.png" と指定するだけなのでは?

その他のtestディレクトリの下にはcssやjsやimageファイルがフォルダとして置いてあります。

imagesだけでなく、cssやjsについても、/test 配下のものを参照する必要があるものは相対pathで指定してください。
また、/testディレクトリの中にあるcss、jsの中でpath指定しているものも同様です。

投稿2019/10/30 05:29

編集2019/10/30 05:31
Y.H.

総合スコア7918

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

test/ ディレクトリ(フォルダー)を作成してその下にファイルをアップロードした、とのことですが、https://(ドメイン)/test/ のURLではアップロードしたファイルをWEBブラウザーで閲覧できません。この場合はファイル名を指定する必要があり、例えば test/ディレクトリの下に「content.html」と言う名前のファイルをアップロードしたのであれば、https://<ホスト>/test/content.html とURLを指定しなければなりません。

これで閲覧できないのであれば、ファイルのパーミッション(権限)が間違っているか、ヘムテルのApache WEBサーバーがドキュメントルートとしているディレクトリの場所がFTPでアップロードした場所と異なっています。

調べてもtestのフォルダ内index.htmlを配置しているかなどの情報しか見当たらなく困っております。

の意味するところは、test/ディレクトリの下にindex.htmlを置けば、「https://(ドメイン)/test/」のURL指定でそのindex.htmlが表示できる、と言うことです。

例えば以下の内容をindex.htmlとして test/ディレクトリ下にアップロードして配置すれば、「TEST」とブラウザーで表示できるはずです。

html

1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>TITLE - TEST</title> 6 </head> 7 <body> 8 <b>TEST</b> 9 </body> 10</html>

ヘムテルWEBサーバーの仕様やFTPの設定を再度確認してみてください。
WEB サーバーの仕様 - へテムルサポート

投稿2019/10/29 17:07

dodox86

総合スコア9254

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2019/10/29 17:08

ほとんどはレンタルサーバーの使い方の話で、プログラミングとは関係無いかな、とは思いました。
piiisan

2019/10/29 22:26 編集

細かく書いてなくて申し訳ないのですが、testディレクトリの下にlndex.htmlは置いてある状態です。 その他のtestディレクトリの下にはcssやjsやimageファイルがフォルダとして置いてあります。 また他にもpartsというフォルダもあり、その中に複数のhtmlファイルがあります。 test/ディレクトリ直下のindex.htmlの中で <?php include ($_SERVER['DOCUMENT_ROOT'] .'/parts/◯◯◯.html'); ?> の記述がされていて、各htmlファイルの内容を呼び出して表示させる形になっています。 コードの修正をした部分はこちらのpartsディレクトリ下のhtmlファイルです。 この場合、何か他に考えられるような原因がありますでしょうか?
dodox86

2019/10/29 23:15

状況を示す情報は、質問に修正、追記するような形で載せてもらえると良いです。 「うまく表示されない」とはどういう状況なのでしょうか。修正したファイルだけがうまく表示されないのか、それとも全体なのか。このサーバーは初めて使ったのでしょうか。それとも以前からコンテンツは載っていて稼動していて、それの一部を差し替えるのですか? <?php include ($_SERVER['DOCUMENT_ROOT'] .'/parts/◯◯◯.html'); ?> ですが、これだとあくまで $DOCUMENT_ROOT を基点としているように見えるので、test/ 下は参照されないのでは。
piiisan

2019/10/30 01:33 編集

追記に記載させていただきました。すいません。 「うまく表示されない」というのはドメインフォルダ直下のindex.htmlでincludeで呼び出しているファイルがtestディレクトリ内の修正後のファイルではなくドメイン直下のindex.htmlファイルを呼び出している状態になっています。 サーバーは以前からコンテンツが載っていて稼働して一部差し替えです。 ただ、私自身こちらのサーバーを使用するのは初めてです。 コード修正を頼まれていてtestフォルダにアップロードするということになっています。 >> <?php include ($_SERVER['DOCUMENT_ROOT'] .'/parts/◯◯◯.html'); ?> ですが、これだとあくまで $DOCUMENT_ROOT を基点としているように見えるので、test/ 下は参照されないのでは。 こちらに関して知識がなくそのままコピペしていましたが、ご指摘の通りでした。 <?php include ($_SERVER['DOCUMENT_ROOT'] .’/test/parts/◯◯◯.html'); ?>に変更いたしました。 ですが、まだ修正前の内容で上がってしまっております。 下記の内容で再度アップロードしましたが、tellink.pngがメインディレクトリ/images/tellink.pngを呼び出してしまいます。 head1.htmlはtest/parts/head1.htmlを呼び出せています。 ▶︎test/Index.html <!DOCTYPE html> <html><head> <meta charset="UTF-8"> <body> <?php include ($_SERVER['DOCUMENT_ROOT'] .'/test/parts/head1.html'); ?> </body> </html> ▶︎test/parts/head1.html <p>こちらは修正後です</p> <img src="/images/tellink.png" /> ▶︎test/images/tellink.png tellink.png
dodox86

2019/10/30 01:25

"test/Index.html" とありますが、"I"ndex.htmlと、iが大文字になっています。UNIXは大文字小文字を区別しますので、test/index.htmlで正しくアップロードされているか確認してください。
piiisan

2019/10/30 01:33

すいません、打ち間違えです。 test/index.htmlとなっております。
dodox86

2019/10/30 01:38

'/test2/'になっていますが、いったいどれが正しいのでしょう。 <?php include ($_SERVER['DOCUMENT_ROOT'] .'/test2/parts/head1.html'); ?>
piiisan

2019/10/30 02:04

<?php include ($_SERVER['DOCUMENT_ROOT'] .'/test2/parts/head1.html'); ?> こちらも訂正させていただきました。 <?php include ($_SERVER['DOCUMENT_ROOT'] .'/test/parts/head1.html'); ?> です。何度も申し訳ありません。
dodox86

2019/10/30 02:18 編集

絶対に存在しないURL、例えば "https://<server>/testX/" と入力するとどうなりますか。 また、絶対に存在する(はず)のPATHを指定するとどうなりますか。PHPのスクリプトが入っていないものです。"https://<server>/test/images/tellink.png" など。(<これで正しいか分かりませんので、質問者さんの方で適切に修正してください) ブラウザのキャッシュをクリアしてください。また、先の回答でも少し書きましたがアップロード後のファイルのパーミッションが正しくセットされているかも確認してください。test/ディレクトリのパーミッションもそうです。
piiisan

2019/10/30 03:04 編集

パーミッションを確認しましたが、問題ないかと思います。 ブラウザのキャッシュをクリアにいたしました。 存在しないURL"https://<server>/testX/"の場合、404エラーが出ます。 存在するはずの"https://<server>/test/images/tellink.png" のPATHを指定すると/test/images/tellink.pngの画像が表示されております。
dodox86

2019/10/30 04:15

存在しない/するURLでのアクセスはOKなようです。つまり、test/下はDOCUMENT_ROOT下のディレクトリとして生きているはずです。あとは/test/index.html ですが、この中のPHPスクリプト部分を外して、ただのHTMLにするとどうでしょう。それで表示されるなら、PHPの問題です。また、PHPサーバーは再起動できたりしませんか。実運用のサイトに影響及ぼすなら再起動はできませんが。
dodox86

2019/10/30 04:20

> パーミッションを確認しましたが、問題ないかと思います。 ちなみに、何をもって「問題ない」と判断しましたでしょうか。(単なる確認です)
Y.H.

2019/10/30 04:47

> ▶︎test/parts/head1.html > > <p>こちらは修正後です</p> > <img src="/images/tellink.png" /> そりゃ imgタグのsrcに"/images/tellink.png" とサイトルートからの絶対pathで記載しているのでそれを参照しますよ。 /test からの相対pathで "images/tellink.png" と指定するだけなのでは?
dodox86

2019/10/30 04:55

Y.H.さん、フォローありがとうございます。htmlの全般がそうなっているなら、もうそれで当たりですね。>Y.H.さん、質問者piiisanさん それで解決したのであれば、理由を回答にまとめて、自己解決として閉じてください。>piiisanさん
dodox86

2019/10/30 05:07

保守性を考えたら、PATHの参照部分は絶対PATHではなく相対PATHに修正しておくのも手でしょうね。確実性を優先するか否か、更に納品先お客様次第のところもありますが。
dodox86

2019/10/30 05:18 編集

> それで解決したのであれば、理由を回答にまとめて、自己解決として閉じてください。>piiisanさん 思い直しましたが、もし本当にそれで全て解決したら、Y.H.さんが回答に書いてベストアンサーが筋かな、と思いました。(判断はお任せします)
Y.H.

2019/10/30 05:32

とりあえず気になる事柄を追記して回答しておきました。
piiisan

2019/10/30 06:57 編集

/test/images/tellink.png変更したら無事解決いたしました! 本当にありがとうございます! お二人のおかげですが、phpのパスのことや細かいことまでご教授いただきましたのでdodox86さんをベストアンサーに選ばせてください。 丁寧にご教授いただきありがとうございました。
guest

0

HTMLだけですか?

投稿2019/10/29 15:08

zma3

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/10/29 17:20

回答ではなく、「質問への追記・修正、ベストアンサー選択の依頼」で聞かれてはいかがでしょう。
piiisan

2019/10/29 22:26 編集

testディレクトリの下にはcssやjsやimageファイルがフォルダとして置いてあります。 また他にもpartsというフォルダもあり、その中に複数のhtmlファイルがあります。 test/ディレクトリ直下のindex.htmlの中で <?php include ($_SERVER['DOCUMENT_ROOT'] .'/parts/◯◯◯.html'); ?> の記述がされていて、各htmlファイルの内容を呼び出して表示させる形になっています。 コードの修正をした部分はこちらのpartsディレクトリ下のhtmlファイルです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問