こんにちは。
私はホームページを作っていて、現在そのサイトのスマホ向けページを作ろうとしています。
SPサイトとPCサイトを別のhtmlファイルで書き、.htaccessファイルを使ってユーザーのアクセスを振り分けようと考えているのですが、そのディレクトリ構造をどのようにしようか迷っています。
インターネットで色々と調べてみた所、.htaccessの振り分けをする場合、
/index.html のspページは、/sp/index.html
/news/index.html のspページは、/sp/news/index.html と言ったように
rootフォルダにspフォルダを作ってそれ以下の構造はpc版と同じにする形が一般的なようですが、
SPサイトとPCサイトで同じ画像を使う場合
1:/news/img/hoge.jpg と、/sp/news/img/hoge.jpg に同じ画像を保存する
2:/sp/*.html のimgタグは絶対パスでPC版のimgフォルダを参照する
3:全て相対参照で、.htaccessでimgフォルダのリクエストのときは/sp/を外す
のいずれかが求められると思うのですが、いずれもややこしく感じられます。
私は、spフォルダを作らずに、
/index.html のspページは、/index_sp.html
/news/index.html のspページは、/news/index_sp.html と言ったように
SPサイトのファイルも同じフォルダに入れ、ファイル名だけを変更するといった形の方が
imgタグなどのsrcの設定などが簡単だと思います。
このやり方が一般的でない(?)理由はなにかあるのでしょうか?
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
No.2,No.3です。
サイトを利用する端末は、「様々な解像度や色深度のグラフィックディスプレイを持つPCや、携帯電話、モバイル機器、音声入出力機器( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」、さらには点字出力、・・・そしてなによりも最近は、「検索エンジン」。
スマホは、そのうちでPCのブラウザと同じscreenと分類されるmediaです。そして、最近はとても幅広のディスプレイから、タブレットやスマホのような小さなディスプレイもある。screenだけを想定したにしても・・
<style media="screen">
そのうちで、
@media screen and (max-width: 800px){
なら、と条件を加えることができるようになりました。(media query)。いわゆるレスポンシブです。
これは、
1. まず、screenメディア向けに、リキッドデザインで作成する。
これで、基本的にはスマホも利用できるはず
2. それで対応できない場合はmedia queryを使う。
小さな画面ではデザインを変更する。
@media screen and (max-width: 800px){
別ファイルにすることもできます。
3. スマホやタブレットの場合は画面は縮小されるので、viewportを指定しておく
<meta name="viewport" content="width=device-width; initial-scale=1.0">
という順番になるでしょう。
ただし、フューチャーホン(高機能携帯電話)は、
<style media="handheld, tty">
になります。この場合は、データ量の多いページは、HTMLを分割して、文字通り別ファイルが良いでしょう。スタイルシートへの対応も遅れているのでね。
印刷が想定されるページは、
<style media="print">
が必要な場合も、
★スマホに限らず、内容が異なる場合は専用ページでよいですが、同じ内容なら別ページにはしない。そのために、1ページの内容量を減らすなどの工夫が必要な場合もありますね。
No.4
- 回答日時:
No.1続き
一般的な方法の動機は「作り手側の論理」です。
「作りやすさ」を優先して「使う側の使いやすさ」を無視してるからです。
本当は、使う側からすれば、どちらでも良いです。
付け加えるならば、レスポンシブにしなくてpcとスマホでソース内容を分けるべきです。
フォントの大きさを無視して良いなら、スマホサイトはpcサイトを相似形に小さくすれば良いです。
そう出来ない理由は文字のサイズです。
文字を3pxなどと小さくしたら読めません。
だからpcサイトの様には文字数を多くは出来ない。
だからpcサイトとはレイアウトも変えないといけない。
そういう制約が出ます。
それを解決する「使う側に易しいサイト」はpcとスマホでソースを別にする事です。
方法は自由で有って、問題は何も有りません。
No.3
- 回答日時:
No.2です。
それでも、どうしても専用のディレクトリが必要な場合は、絶対パスを利用するほうが楽です。これは、SPに限らず、すべての参照ファイルやサイト内リンクもです。
なぜなら、HTMLファイルを他のディレクトリに移動したり、階層を変更したときも書き換えなくて済むからです。
★ただし、ローカルでテストするために、テスト用のローカルサーバーをパソコンにインストールしておかないと、作業が難しいでしょう。
なお、スマホも、mediaはscreenですが、それ以外にも印刷機やスクリーンリーダー、携帯電話(フューチャーホン)、点字端末もあるのですよ。先のサンプルはHTMLには文書構造しか書かれていないので、それら相手のスタイルシートを用意すればよいし、なくても、ちゃんと利用できますね。印刷したり、スマホがiOSなら「リーダー」使ってごらんなさい。
No.2
- 回答日時:
>SPサイトとPCサイトを別のhtmlファイルで書き、
ホームページでなくウェブサイトですね。
https://ja.wikipedia.org/wiki/%E3%83%9B%E3%83%BC …
htmlでなく、HTML(頭文字だから大文字)
★別のファイルを作るのは、最大の間違い。
「HTML文書が、ブラウザやプラットフォームの違いを超えてうまく働くべきであるということは、多くが認めるところである。 相互運用性の達成は、コンテンツプロバイダのコストを低下させる。なぜならただ1種類の文書しか作る必要がなくなるからだ。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」
構造とプレゼンテーションの分離( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )
単純に、たった一つのHTMLを書き、スタイルシートだけ分ければよい。作成もメンテナンスもとっても楽。わざわざレスポンシブにする必要もないことが多い。
また、
>rootフォルダにspフォルダを作ってそれ以下の構造はpc版と同じにする形が一般的なようですが、
も間違い。大規模なサイトでしたら、PATH_INFOで動的に作成すればよいので、実在のフォルダーがあるわけではない。
スタイルシートやレスポンシブに対応していない端末のために、path_infoで、動的にページを作成しているだけで、別のページがあるわけではないことが多いです。
ただ、同じ内容で複数のページを作成するのは、SEO的に極めてまずい方法ですよ。googleは作るな!!と言っている。
★せっかくHTML使って作成するのに、利用端末ごとに複数のページを作るのは本末転倒です。
【引用】____________ここから
HTMLは、どんな環境からもWebの情報を利用できるようにすべきだという方針の下に開発されている。例えば、様々な解像度や色深度のグラフィックディスプレイを持つPCや、携帯電話、モバイル機器、音声入出力機器、帯域が広いコンピュータや狭いコンピュータ、等の環境である。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[Introduction to HTML 4 (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より
たった一つ文書を作成すれば、どのような端末からも利用できるようにするのがHTMLの最大の目的なのですよ。
簡単なサンプル
★タブは_に置換してあるので戻す。
★Another HTML Lint - Gateway( http://www.htmllint.net/html-lint/htmllint.html# )
の右上(DATA)でチェック済み
<!doctype html>
<html>
<head>
_<meta charset="utf-8">
_<title>サンプル</title>
_<meta name="description" content="">
_<meta name="author" content="ORUKA">
<style media="screen">
<!--
/* 最初にわかりやすいように色分け */
html{background-color:gray;}
body{background-color:silver;}
header{background-color:lime;}
section{background-color:yellow;}
section section{background-color:white;}
footer{background-color:aqua;}
aside{background-color:fuchsia;}
nav{background-color:teal;}
/* 基本設定 */
html,body{margin:0;padding:0;}
h1,h2,h3,h4,p{margin:0;line-height:1.6em;}
/* 5カラム */
body{min-width:800px;max-width:1000px;margin:0 auto;}
section{position:relative;}
body>section>*{margin:0 200px;}
section section{min-height:10ex;}
section section+section{margin-top:20px;}
section nav,section aside{width:190px;margin:0;height:100%;position:absolute;top:0;}
section nav{left:0;}
section aside{right:0;}
/* レスポンシブ */
@media screen and (max-width: 800px){
_body{min-width:0;margin:0 auto;}
_body>section>*{margin:0 0 0 200px;}
_section nav{margin:0;}
_section aside{position:static;width:auto;height:auto;margin:0 0 0 200px;}
}
@media screen and (max-width: 640px){
_section nav{position:absolute;width:100%;height:40px;top:0;margin:0;}
_body>section>*{margin:0;}
_section aside{display:none;}
_body>section{padding-top:100px;}
_section nav h3{display:none;}
_section nav ol{margin:0;padding:0;text-align:center;}
_section nav ol li{list-style-type:none;display:inline-block;width:30%;line-height:40px;}
}
-->
</style>
</head>
<body>
_<header>
__<h1 id="title">Your title</h1>
__<nav>
___<ul>
____<li><a href="/">Top</a></li>
____<li><a href="/products">製品</a></li>
____<li><a href="/link">links</a></li>
___</ul>
__</nav>
_</header>
_<section>
__<h2>A smaller heading</h2>
__<p>
___これはサンプルです。
__</p>
__<section id="A">
___<h3>A項</h3>
__</section>
__<section id="B">
___<h3>B項</h3>
__</section>
__<nav>
___<h3>ナビゲーション</h3>
___<ol>
____<li><a href="#TOP">TOP</a></li>
____<li><a href="#A">A項</a></li>
____<li><a href="#B">B項</a></li>
___</ol>
__</nav>
__<aside>
___<h3>Something aside</h3>
___<p>本文と直接関係ない(aside)な記事</p>
__</aside>
_</section>
_<footer>
__<h3>A nice footer</h3>
_</footer>
</body>
</html>
No.1
- 回答日時:
フォルダで一括で切り替えた方が、単純にスッキリするからです。
pcとスマホはディスプレイサイズが違うので、画像もそれに合わせて別に用意します。
こうすれば、.htaccessによる振り分けは一発で出来ます。
RewriteRule ^$ /sp/$1 [R=301,L] とか
RewriteRule ^$ /m/ [R,L] とか
また、振り分けで考慮した方が良い点は、googleへ「振り分けていますよ」と認識して貰って、コピペサイトではない事をアピールする事ですね。
スマホ側のソースに、canonialを追加し、「正はpcサイトです」と宣言します(全ページ)。
pc側のソースには、alternateを追加し、「スマホ側にも同じページがあります」と宣言します(全ページ)。
上記の様に、ややこしいので、レスポンシブで対応する方法が流行ってる訳です。
レスポンシブならソースは共用なので、上記の一切が不要になるからです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- HTML・CSS 差し込み画像にをcssで大きさ指定したい 1 2022/11/23 23:14
- ドライブ・ストレージ 「USB外付けSSDが内蔵SSDと同じように認識される」という文の意味 4 2023/01/09 11:53
- ホームページ作成・プログラミング Adobe DreamweaverでのサイトのFTP 2 2023/03/05 11:55
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- フィルムカメラ・インスタントカメラ アサヒペンタックスSPについて 2 2022/11/14 12:24
- 新卒・第二新卒 就活 新卒 自己PR 強み 添削お願いします。 以下の文章で自己PRを書いてみたのですが、どこが競争 3 2023/02/25 21:27
- スピーカー・コンポ・ステレオ スピーカーの高音再生限界チェックで7KHzが限界 10 2023/04/20 13:38
- 演歌・歌謡曲 シングルレコードの事でお聞きしたい。 4 2022/10/01 14:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ホームページ制作、SPサイトの...
-
PC・ガラケー・スマホの振り分け
-
パソコンと携帯で文字のサイズ...
-
スマートフォン用のサイト作成...
-
Excelで、社外秘(閲覧のみ)と...
-
HTMLからフォルダを開きたい
-
ホームページでファイルをダウ...
-
iPadの標準ブラウザでローカルH...
-
form action="#"
-
googleドライブで、PDFファイル...
-
<!DOCTYPE html>あってますか?↑
-
画面を開いたときに指定位置ま...
-
コメントが閉じてないというエ...
-
医療画像(Windows用)をMacで...
-
POSTしたデータの文字コードがu...
-
1つ下の階層のフォルダに相対...
-
HTMLで別PCのフォルダを開く
-
Webサイトから、txtファイルを...
-
VBA URLDownloadToFileについて
-
コマンドプロンプトでパラメー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ホームページ、iPadやiPhoneで...
-
ホームページを作っているので...
-
リンクの下線は消すのが普通?
-
カラム落ちの何が悪いのか
-
ホームページ制作、SPサイトの...
-
HPビルダーのフレームページ...
-
平均的なウィンドウサイズとは?
-
ソリッドレイアウトとリキッド...
-
レスポンシブデザインとは? ...
-
ホームページの携帯サイトの作...
-
デザインとコーディングは同一...
-
Windowsホームページ作成MACで...
-
ブラウザ切り替え
-
レスポンシブ 横1080px高解像度...
-
画面は固定と可変のどちらがい...
-
エラーが出ます
-
スマホ横幅が720px だけ 横が...
-
携帯電話(ガラケー)でのデザ...
-
HTMLからフォルダを開きたい
-
Excelで、社外秘(閲覧のみ)と...
おすすめ情報