• ベストアンサー

htaccessリダイレクトの書き方

htaccessの書き方をおしえてください。 SSL証明書を取得したので、http→httpsへのリダイレクトに加えて、 PC向けのHPとスマートフォン向けのHPへのリダイレクトをしたいのです。 それぞれ個々の設定に関するサンプルはあるのですが、複合してあわせるとうまく動かなくて、質問させていただきました。 よろしくおねがいいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6638/9405)
回答No.4

>たしかに、トップページだけではないので、ドメイン以下すべてにリダイレクトさせたいのです。 それならば、スマホ判定となった時に フォルダ・パス部分の手前に /sp/を付ける、と言うリダイレクトにしてみましょう。 さらに、既に /sp/がついていた場合は除外します。(じゃないと /sp/sp/sp/…と増えまくるので) ---- .htaccess ---- RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC] RewriteCond %{QUERY_STRING} !mode=pc RewriteCond %{REQUEST_URI} !^\/sp\/ RewriteRule ^(.*)$ /sp/$1 [R,L] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] ---- ここまで ---- これで、スマホアクセス時には必ず /sp/の下に飛ばされることになります。 ただしこうしたからには、ルートフォルダ以下と /sp/フォルダ以下に、必ず同じファイル名を用意しないといけません。 またその内容も、表示以外は一致させるようにしないと困るでしょう。 メンテには結構手間がかかることになります。 そこで最近では、cssによる「レスポンシブデザイン」で、ページを作る方が多いと思います。 >CSSでスマホ対応!レスポンシブサイトの作り方と初心者向けQ&A >https://www.sejuku.net/blog/99964 デバイスの「幅」により、cssを切り替えて「見え方」を変える方法です。 こちらだと、違うフォルダにある同名ファイルの内容を同一に保つ、という手間は無くなります。 なんせPCもスマホも同じHTMLファイルにアクセスしますから。 スマホアクセスを/sp/フォルダに飛ばす、というリダイレクトも、不要になります。

hide_momiji
質問者

お礼

ありがとうございます。 丁寧なご回答に感謝します。 おかげさまで思い通りうごきました。 BAとさせていただきました。

その他の回答 (3)

  • asciiz
  • ベストアンサー率70% (6638/9405)
回答No.3

mod_rewrite を使ってるとのことだったので、単純にmod_rewrite用のリダイレクト記述を追加して、動いたような感じです。 <IfModule> は、入ってなければどうせ動かないんだし、と省略しちゃいましたが。 あっても良いとは思います。 ---- .htaccess ---- RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC] RewriteCond %{QUERY_STRING} !mode=pc RewriteRule ^$ /sp/ [R,L] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] ---- ここまで ---- ところで、上記ルールを見て気になった点が。 スマホ向けに飛ばすのはトップページのみ、でいいんでしょうか? 例えば(スマホでのアクセス時) http://ドメイン.jp/ は https://ドメイン.jp/sp/ に飛ぶわけですが、 http://ドメイン.jp/index.html は https://ドメイン.jp/index.html とhttpsリダイレクトされるのみでスマホ用ページには飛びません。 https://ドメイン.jp/sp/index.html に飛んだ方が良かったりしますか? あるいはindex以外のも飛んだ方が良いですか? https://ドメイン.jp/test.html へのスマホアクセスで https://ドメイン.jp/sp/test.html へリダイレクトされるなど。

hide_momiji
質問者

補足

ありがとうございます。 >http://ドメイン.jp/index.html は > https://ドメイン.jp/index.html と >httpsリダイレクトされるのみでスマホ用ページには飛びません。 >https://ドメイン.jp/sp/index.html に飛んだ方が良かったりしますか? >あるいはindex以外のも飛んだ方が良いですか? >https://ドメイン.jp/test.html へのスマホアクセスで >https://ドメイン.jp/sp/test.html へリダイレクトされるなど。 たしかに、トップページだけではないので、ドメイン以下すべてにリダイレクトさせたいのです。

  • asciiz
  • ベストアンサー率70% (6638/9405)
回答No.2

あ、あと、http→https リダイレクトは、レンタルサーバの管理コンソールから、「常時https設定」みたいなのを有効にするだけで可能な場合もあります。 それができるなら、htaccessで考えるのはPC/スマホの振り分けだけでよくなったりします。 そしたら、振り分け機能のみを実装すれば良いので、参考ページのサンプルもそのまま適用出来るかもしれません。

hide_momiji
質問者

補足

ありがとうございます。 ロリポップサーバをつかっています。 上位プランなら管理画面から設定できるのかもしれませんが、 現状チカッパプランで「https設定」を有効無効にする機能はないようにおもえます。

  • asciiz
  • ベストアンサー率70% (6638/9405)
回答No.1

htaccessによるリダイレクトと一口に言っても、Redirect、RedirectMatch、mod_rewrite(RewriteEngine)によるものなどいろいろあるので、うまくいかなかったhtaccessを載せてどのようなことがしたかったのか書いた方が良いと思います。 まあドメイン名やフォルダ名は仮のものに置き換えて。 あと単にスマホ向けページにしたいと言っても、違うドメインに飛ばす方法、違うフォルダに振り分ける方法、表示ファイルを変える方法、パラメータを変える方法、など、やはりいろいろあります。 どのようにしたいと考えていたのでしょうか。

hide_momiji
質問者

補足

ありがとうございます。 現在はスマートフォンとPC画面の切り替えをしています。 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC] RewriteCond %{QUERY_STRING} !mode=pc RewriteRule ^$ /sp/ [R,L] </IfModule> これに、http://→https://へのリダイレクトを追加したいのです。 説明がたらずに申し訳ありません。

関連するQ&A

  • .htaccessのリダイレクトの書き方

    .htaccessのリダイレクト処理で http://sample.com/index.phpにpost情報込みでアクセスがあった場合、 「www統一」 「index.phpなし」 「index.phpなしアドレスにリダイレクトされた場合もpostの値を取得できる」 という条件を満たすコードはどのようにすれば良いのでしょうか? 「www統一」や「index.phpなし」は説明サイトも多いので可能なのですが、リダイレクト後のURLでもpostの情報を取得する方法がわかりません。 どうそよろしくお願いします。

    • ベストアンサー
    • HTML
  • htaccessでリダイレクト

    http://www.○○○/index.php?s=sample というアドレスを http://www.◆◆◆/ にリダイレクトしたいと思っています。 htaccessに下記のように記述しました。 RedirectPermanent /index.php?s=sample http://www.◆◆◆ が、リダイレクトしませんでした。 次に下記のように記述してみました。 RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?s=$1 [L] RedirectPermanent /sample/ http://www.◆◆◆ すると、 http://www.○○○/index.php?s=sample にアクセスすると、リダイレクトはしますが、 リダイレクト先のアドレスが、 http://www.◆◆◆s=sample となり、引数が残ってしまいます。 原因もわからず、どのようにしたらいいかが全くわかりません。 どなかたお教えください。

    • ベストアンサー
    • PHP
  • .htaccessリダイレクト

    .htaccessリダイレクト 別ドメインにリダイレクトさせるための方法が分からないので、質問させてください。 現在http://www.aaaaa.jp/aaa/bld_list.phpにアクセスしたときに http://www.bbbbb.jp/bbbにリダイレクトさせようとしています。 googleで「別ドメイン .htaccess リダイレクト」など色々検索してみたのですが、 なかなか出て来なく、困っています。 どなたかアドバイスいただけないでしょうか?

  • .htaccessのリダイレクトについて

    .htaccessで以下のようにURLをリダイレクトさせたいのですが、調べてもなかなかこのようなサンプルがなく、悩んでいます。 以下のようなURLにアクセスした場合 example.com/public example.com/public/ example.com/public/pageA example.com/public/pageB example.com/public/pageB/pageC 以下のように、publicを削除したURLにリダイレクトしたいです。 example.com example.com/ example.com/pageA example.com/pageB example.com/pageB/pageC 上記の設定は.htaccessのRewriteRuleの設定で可能でしょうか? どなたか詳しい方がいたら教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • .htaccessによりリダイレクトされるサイトの一部だけリダイレクト

    .htaccessによりリダイレクトされるサイトの一部だけリダイレクトされないようにできませんか? ドキュメントルートhome/直下の.htaccessには、下記の記述がされています。 RewriteEngine on RewriteRule .html$ http://www.sample.com/index.php ↑これは、拡張子が.htmlのページを表示しようとしたらwww.sample.com/index.php(TOPページ)へリダイレクトさせるという意味かと思うのですが、 home/webalizer 直下には、自動的に○○○.htmlファイルが生成されるようになっており、 このファイルを開こうとしても、TOPページにリダイレクトされてしまい、 FTP等でダウンロードしてからでないと内容を確認できません。 ルート直下の.htaccess は手を加えたくないので、 home/webalizer直下に、何らかの記述の.htaccessファイルを置くことにより、webalizer内の.htmlファイルだけはリダイレクトせずに開けるようにできないものでしょうか?

    • ベストアンサー
    • PHP
  • .htaccessのリダイレクトができない

    .htaccessに「Redirect *** ***」という記述をして、 ほかのページにリダイレクトさせようとしています。 しかし、どうしてもうまくいきません。 .htaccessに「DirectoryIndex」などほかの記述をしたところ、 うまく動作しているのでApacheの設定には問題がないと思います。 http://www.shtml.jp/htaccess/redirect.html このページとまったく同じように設定したのですが、 (もちろんパス名は違いますけど) 何かうまく動かない原因は考えられるでしょうか? よろしくお願いいたします。

  • htaccessのリダイレクトで、ディレクトリを除外できますか?

    htaccessで、ルートから別サイトにリダイレクトをしています。 あるディレクトリだけ、リダイレクトの設定をしたくないのですが、 htaccessで可能でしょうか?

  • .htaccessでのリダイレクト

    .htaccessのリダイレクトで困っています。 .htaccessのリダイレクトが不得手なのでお聞きしたいのですが、 PC用のWEBデータが「/pc/」ディレクトリに入っています。 スマホ用のWEBデータが「/sp/」ディレクトリに入っています。 WEBのルート「/」には何も入っていないのでアクセスがあった場合は、PCの場合は「/pc/」に、スマホの場合は「/sp/」に移動させたいです。 でも、スマホから「/pc/」にアクセスがあった場合は、「/sp/」に移動はさせたいのですが、PCから「/sp/」にアクセスがあった場合はそのまま表示したいです。 さらに、例えば「/pc/access.html」にスマホからアクセスがあった場合は、「/sp/access.html」を表示させたいです。PCとスマホで対応するファイルは全て存在します。 そのような場合の.htaccessの記述方法はどのようになるのでしょうか? ご存じの方がいましたらよろしくお願いします。

  • .htaccessについて

    htaccessについて質問いたします。 WEBサイトにSSL証明書を取得する関係で、 http://@@@.jp → https://www.@@@.jp http://www.@@@.jp → https://www.@@@.jp https://@@@.jp → https://www.@@@.jp にように、左から右にとばす事を htaccessを使用してできないでしょうか?

  • httpsからhttpへのリダイレクト

    こんにちは。 httpからhttpsへのリダイレクトは過去ログにあったのですが、私の場合は その逆です。 携帯用のアンケートフォームを作成し、これは問題なく稼働しているのですが、このフォームのURLでQRコードを作成した際に、誤ってhttps://~で作成してしまい、それが印刷物になってしまいました。 SSL証明書などはインストールしていないので、https://~でアクセスされた場合、警告など出さずにhttp://~にリダイレクトさせたいのですが、方法を 教えていただけないでしょうか。 ちなみにサーバは共用レンタルサーバなので、htaccessで設定できればと考えております。 よろしくお願いいたします。

専門家に質問してみよう