プロが教えるわが家の防犯対策術!

Dreamweaver 8を使用してサイトを構築しています。
サーバーはSAKURAサーバを使用しています。

次のようなディレクトリでサイトを構成しており、テンプレートフォルダはもちろんルートにあります。

------------------------------------------------------------
index.html
about.html
~~~.html
main.css

Templates(フォルダ)
   L main.dwt

img(フォルダ)
   L hoge.jpg

item(フォルダ)
L test.html
------------------------------------------------------------

item内の「test.html」には「main.dwt」のテンプレートが適用されています。

そこで、main.dwtの相対パスでmain.cssの読み込みを次のように記述しており「<link rel="stylesheet" type="text/css" href="../main.css">」今まで問題なかったのですが、先日、ある事に気づきました。


それは①であれば問題ないのですが、②であればcssが効かなくなり表示が崩れます。
https://www.hoge.co.jp/item/test.html
https://www.hoge.co.jp/item//test.html ・・・スラッシュを二重にしている

通常はスラッシュを二重にすることなどなく、またそのようなURLで辿りつくひとも居ないでしょうが、googleのサーチコンソールを確認すると②と同じような体裁で二重スラッシュのあるURLが重複ページとして多数警告を受けており、今回の質問に至った次第です。

通常、スラッシュが二個以上ある場合は一つのものとサーバは認識するようですが、私のサイトでは二重スラッシュをつけると表示が崩れてしまいます。

それで、相対パスの設定が誤っているのかと色々ためしたところ、test.htmlのテンプレートを一旦解除し、CSSの読み込みを「href="/main.css"」にし、Upしたところ、ページは表示崩れをおこしていなく、また上記②のように二重スラッシュをつけても問題なくCSSが適用されている状態でページが表示されるようになりました。。。ちなみに「href="main.css"」では表示がくずれます。

しかしこれは本来のパスではなく、main.cssのある階層は「test.html」からみれば一つ上です。
また、/main.css にパス変更するとF12でのブラウザプレビューではCSSが適用されておらず、今度はこちらの表示が崩れてしまいます。

本来であれば、ひとつ階層が上のファイルを読みに行くので、../main.css にすべきなのは明確なのですが、webにアップすると「/main.css」でも正常に読み込まれ、また二重スラッシュを用いても一つのスラッシュとみなされて正常に表示されます。。。なぜに「/main.css」でもcssが正常に読み込まれているのか理解できていません。

上記につきまして、お気づきの点がございましたらご回答いただけましたら幸いです。
以上、何卒よろしくお願い申し上げます。

質問者からの補足コメント

  • 明日は大幅なテンプレートの修正と、一斉置換の日となると思います。

    SEOを少々齧っており、なぜ今までダブルスラッシュのエラーがなかったのかというのは、それはよくある勉強不足のミスでgoogle側が許容していたのだと思います。

    そして今はそれが厳しくなってきたのだろうと。

    諸々、厳しくなってきますね。

      補足日時:2023/06/13 20:01
  • やっと修正が終わりました!
    お二方のおかげです。ありがとうございました!

    二重スラッシュの問題も解決しAnother HTMLでチェックしても問題はありませんでした。これでgoogleコンソールの重複ページエラーも解消されるはずです。

    修正方法は、
    まず、Dreamweaverのサイト管理のローカル情報で、「ドキュメントルート」から「サイトルート」に変更をしました。次にライブラリ修正、テンプレート、そしてベタ打ちコードの順で置換修正を行いました。ひたすら「./」を検索、そして適切な階層へ、その修正の繰り返しです。

    あとの問題としましては、
    やはりF12のブラウザプレビューが効かない点です。補正するとの情報を頂きましたが私の環境では補正できず、表示が崩れてしまいます。

    この点でなにかご存じの方がおられましたら引き続きご教示いただけましたら幸いです。
    以上、よろしくお願い申し上げます。

      補足日時:2023/06/14 15:09
  • 質問を締め切らさせていただきます。
    お二方、ほんとうにありがとうございました!

    /
    ./
    ../

    が、今も頭をくるくるまわっています;w

      補足日時:2023/06/14 20:55

A 回答 (2件)

「/main.css」は



ルートから見たときのパスを表します。

つまり、http://www.hoge.co.jp/
またはhttps://www.hoge.co.jp/

を基準として、そこからのパスなので、
「www.hoge.co.jp/main.css」という位置を示しています。

これは下層にあるどんなファイルも、www.hoge.co.jp/main.cssを読みに行く、ということです。

階層がどんなに深くても一番上のディレクトリからのパスを探すので、表示が崩れない、ということになります。

それに対して、

>「href="main.css"」では表示がくずれます。

というのは、「./main.css」と同じ意味です。

test.htmlと同じ階層にあるmain.cssを探しにいくので、表示が崩れてる、ということになります。

「/」「./」「../」といった書き方があります。

相対パス、ルート相対パスについて、一度調べてみてください。
    • good
    • 0
この回答へのお礼

なるほど!

ルート相対パス、知りませんでした。

となると、upしたときの挙動が理解でき、またDWでは表示が崩れてしまうのもわかるようです。

詳しく調べてみます。

ご回答、誠にありがとうございました!

お礼日時:2023/06/13 19:19

相対パス指定 "../main.css" は、


表示中のページ URL で一つ上の階層から読みます
一つ上の階層とは、
ご提示のスラッシュ二重 URL では名前のない階層があるため
xxx://hoge.example.com/item// ← 表示中のページ URL の階層
xxx://hoge.example.com/item/ ← 一つ上の階層
このためブラウザはファイルを取れず表示崩れする

絶対パス指定 "/main.css" は、
表示中のページ URL で最上位の階層から読みます
最上位の階層とは、
URL のサーバー名部分までのことなので
xxx://hoge.example.com/item// ← 表示中のページ URL の階層
xxx://hoge.example.com ← 最上位の階層
このためブラウザはファイルを取れる

ただし、サイトに上げる前のブラウザプレビューでも同様に処理されるので
file://localhost/Users/you/docs/web/item/ ← 表示中のページ URL の階層
file://localhost ← 最上位の階層
おそらくこの階層にファイルが無いのでブラウザは表示崩れする

絶対パス指定のページは、ローカル環境では試験用サーバーを経由させるなどの工夫が無いと表示できなくなるので、ご注意ください

余談ではありますが、
Dreamwaver ならばテンプレートの相対パスを適示補正してくれるようです
https://helpx.adobe.com/jp/dreamweaver/kb/228553 …
    • good
    • 0
この回答へのお礼

ありがとうございます!

絶対パスはhttps://~から書かなければならないと長年、勘違いしていました。

>Dreamwaver ならばテンプレートの相対パスを適示補正

こちらに関しての情報につきましてもありがとうございます。
まだ詳細を見れていませんが参考にさせていただきます。

../(ローカル環境での相対パス)、が結局はいけなかったということですね。

しかし、googleコンソールでは今まで十年以上そのようなエラーが発生していなかったのに、なぜ今更という気がしてそこが解せません。。。

お礼日時:2023/06/13 19:37

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