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

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

詳細はこちら
.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

1回答

1147閲覧

スマホページへのリダイレクトに絶対パスを使用することのメリットデメリット

ringoman

総合スコア17

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

1クリップ

投稿2019/12/05 06:13

自分で調査しましたが、答えが見つからなかったので質問させてください。
検索キーワードのヒントだけでもいただけると助かります。

スマホでアクセスした際にスマホページへリダイレクトする処理をhtaccessに記載したところ、
なぜかうまくいかなかったため、(teratail内で質問しています)同一サーバ内同一ディレクトリ内ですが、

htaccess

1RewriteRule ^(/?|index.html)$ /sp/ [L]

ではなく、

htaccess

1RewriteRule ^(/?|index.html)$ https://test.site/sp/ [L]

と絶対パスを記載しました。

これでスマホでアクセスした際にはスマホページにリダイレクトされるようになったので、問題ないかとは思うのですが、
どのような解説記事を見てもhtaccessでスマホページにリダイレクトする際には「/sp/」と記載してますし、
私が現在作成しているサイトもサーバ移行前は絶対パスではなく、「/sp/」で動作していました。
ディレクトリ構造的にもサーバ移行前と変化していませんし、当然、該当htaccessと同一階層にspディレクトリがあり、
sp直下にスマホページ用のindex.htmlがあります。

この場合、このままスマホページへのリダイレクトは絶対パスで問題ないのでしょうか?
同一サイト内なのに絶対パスを使用してリダイレクトすることについてメリットデメリットを教えてください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

私が回答した質問ですね。/sp/$1の先頭の/を書き忘れたやつ。
まず、用語の間違いから。

https://test.site/sp/は「絶対パス」じゃなくて「絶対URL」です。
「絶対パス」というのは/spみたいに/から始まっているパスのことです。

RewriteRuleのリライト先に書けるものはいくつかありますが、リファレンスの絶対URLを書いた場合についてき記述ををGoogle翻訳したものを引用しておきます。

絶対URL

絶対URLが指定されている場合、mod_rewriteはホスト名が現在のホストと一致するかどうかを確認します。含まれている場合、スキームとホスト名は取り除かれ、結果のパスはURLパスとして扱われます。それ以外の場合、指定されたURLに対して外部リダイレクトが実行されます。外部リダイレクトを現在のホストに強制的に戻すには、以下の[R]フラグを参照してください。

↑Google翻訳と思えないほどの出来ですね。

ということで、ホスト名が元のホスト名と同じ場合は、その2つの記述は同じ意味を持ちます。
動作が違ったのなら、ホスト名が違うのでは?

説明中の「URLパス」というのもリファレンスページのすぐ上にありますが、/spのようにドキュメントルートに対する相対URLのことです。

投稿2019/12/05 13:48

otn

総合スコア85893

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

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

ringoman

2019/12/11 05:34

回答遅くなり申し訳ございません。 色々と間違いを指摘していただきありがとうございます。 色々と勘違いしてたようなので、ご指摘いただいたホスト名が違うという観点でもう少し調べてみようと思います。 大変助かりました。 ちなみに、、、 もし可能なら教えていただきたいのですが、、 これまできちんと腰を据えてITの勉強をしたことがないうちに業務が始まり、都度都度調べて解決しているのですが、 いつもサーバ移行やサブサイトの作成をするときにhtaccessの設定とか、500エラーが頻発してどうにもならないという事態に陥ることが多いのですが、これはどのようなジャンルを勉強したら基礎的な知識が身につくでしょうか?ネットワークでしょうか? 今後本を買ったりする際に参考にさせていただきたいです。。。
otn

2019/12/11 11:49

> 今後本を買ったりする際に参考にさせていただきたいです。。。 そうですね。ハウツー本じゃなくて、基礎を学べる本を探すことでしょうか。 読んでない(書店でパラパラ)のですみませんが、 ・コンピューターはなぜ動くのか https://amzn.to/2YBO2AA ・Linuxのしくみ https://amzn.to/35nXwlm ・Webを支える技術 https://amzn.to/2E7DgIX とか。 お金と時間があれば、世界的名著でも。 ・コンピュータの構成と設計 https://amzn.to/36hoIm6
ringoman

2020/02/04 05:38

回答ありがとうございます! 見てみようと思います!
Y.H.

2020/02/04 05:49

本当に以下で「リダイレクト」される様になったのでしょうか? [L]⇒[R,L]でないとリダイレクトされない気がするのですが。。。 RewriteRule ^(/?|index.html)$ https://test.site/sp/ [L]
otn

2020/02/04 06:48

ホストが異なる場合は、リダイレクトしないとどうしようもないので、そういう仕様になっています。 同じホストの場合は、[R]を書かないとリダイレクトになりませんが。
Y.H.

2020/02/04 07:10

すみません、どうしても以下が気になったので。。。 > ・同一サーバ内同一ディレクトリ内 >・当然、該当htaccessと同一階層にspディレクトリがあり、sp直下にスマホページ用のindex.htmlがあります > ・ホスト名が違うという観点でもう少し調べてみようと思います
otn

2020/02/04 07:19

ああ、すいません。ずいぶん前なので、元の質問の条件の記憶違いです。 https://test.site/sp/ [L] と /sp/ [L] で同じ結果になるのか?という質問で、同一ホストならそういう仕様ですという回答でしたね。 普通の意味でのリダイレクトじゃないので、そこは質問者の用語の混乱かと思います。 失礼しました。
Y.H.

2020/02/04 07:47

ぃぇぃぇ。こちらこそ横から失礼しました :-)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問