質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

Q&A

解決済

1回答

312閲覧

SSL化でhttps://www. のアクセスでRewriteにより書き換えられたページが一部書き換えられず表示されてしまう。

pro88

総合スコア17

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

0グッド

0クリップ

投稿2018/09/14 12:18

編集2018/09/19 11:54

環境
さくらのVPS CentOS 6.10
Apache/2.2.15
PHP 5.4.45
SSL化でwww無しのリダイレクトを実装。

お世話になります。
前回以下の質問で、回答をいただきまして書き換えられたページが表示されるようになったのですが。

質問タイトル
「httpsのアクセスでRewriteにより書き換えられたページが表示されなくなった。」
https://teratail.com/questions/145051

その後、完全にSSL化ですべてのページが https でアクセス表示可能になったかの確認作業をしておりましたところ
Rewrite により書き換えられたページの URL がある直打ちではおかしい表示になってしまうことに気付きました。

以下の書き換えで

RewriteRule ^/([0-9A-Za-z]+)/shop/([0-9A-Za-z]+)/$ /var/www/html/List/$1/shop/index.php?unique=$2 [L] RewriteRule ^/([0-9A-Za-z]+)/shop/([0-9A-Za-z]+)$ /var/www/html/List/$1/shop/index.php?unique=$2 [L]

※「List」というディレクトリは Alias で隠れる部分です。

上記の Rewrite で以下の URL のページが表示されます。

https://example.com/kantou/shop/n78de36u/

それを以下4つのパターンで直打ちします。

example.com/kantou/shop/n78de36u/ http://example.com/kantou/shop/n78de36u/ www.example.com/kantou/shop/n78de36u/ http://www.example.com/kantou/shop/n78de36u/

上記4つのパターンの直打ちでは正しい URL で表示されてページも正常ですが以下のパターンだけで問題が出ます。

https://www.example.com/kantou/shop/n78de36u/

この https に wwwあり の直打ちでアクセスすると

https://example.com/kantou/shop/n78de36u/?unique=n78de36u

このように wwwなし にはなってスラッシュ区切りの書き換えもできているのですが
一部書き換えられずに ?unique=n78de36u の部分が表示されてしまうのです。
この時ページは正常に表示されており、URL だけが一部書き換えられないとなってしまいます。

上記の RewriteRule は前回の質問で解決した
/etc/httpd/conf.d/ssl.conf の
<VirtualHost _default_:443> 内に記述しています。
ちなみに wwwなし で https での Rewrite は
/etc/httpd/conf/httpd.conf 内に以下の記述です。

RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^.*$ https://example.com%{REQUEST_URI} [R=301,L] RewriteCond %{HTTP_HOST} !^example.com$ [NC] RewriteRule ^.*$ https://example.com%{REQUEST_URI} [R=301,L]

上記となります。

以上解決したい問題は
以下のようにhttps で www をつけた状態の

https://www.example.com/kantou/shop/n78de36u/

直打ちでアクセスして https のwwwなし の ?unique=n78de36u が付かない状態に出来ないでしょうか?

質問文が長く分かりにくかったのではと思い少し短く修正いたしました。
お力をお貸しいただけますよう宜しくお願いいたします。

≪質問の追記をさせていただきます≫
★こういうリダイレクトがしたい。
全てのアクセス、リンクを辿るアクセス、URL直打ちのアクセスで
https://example.com/
へとリダイレクトしたいです。

http://www.example.com/ ⇒ https://example.com/ 実装されている https://www.example.com/kantou/ ⇒ https://example.com/kantou/ 実装されている https://www.example.com/kantou/shop/n78de36u/ ⇒ 実装されない。詳細は最下部に

★/etc/httpd/conf/httpd.conf 内に記述

RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^.*$ https://example.com%{REQUEST_URI} [R=301,L] RewriteCond %{HTTP_HOST} !^example.com$ [NC] RewriteRule ^.*$ https://example.com%{REQUEST_URI} [R=301,L]

★/etc/httpd/conf.d/ssl.conf 内に記述

RewriteRule ^/([0-9A-Za-z]+)/shop/([0-9A-Za-z]+)(/)?$ /var/www/html/List/$1/shop/index.php?unique=$2 [L]

★一部実装されない内容
現状で通常のアクセスで有れば階層下のページでも意図するリダイレクトが実行される。
ただ以下の Rewrit で書き換えられたページだけが、

RewriteRule ^/([0-9A-Za-z]+)/shop/([0-9A-Za-z]+)(/)?$ /var/www/html/List/$1/shop/index.php?unique=$2 [L]

https に wwwあり の直打ちでアクセスすると

https://www.example.com/kantou/shop/n78de36u/

以下のように ?unique=n78de36u の部分が表示されてしまうのです。

https://example.com/kantou/shop/n78de36u/?unique=n78de36u

wwwなしには変換されているので、後方の ?unique=n78de36u の部分が付かないようにしたい。

以上ですが、宜しくお願いいたします。

※間違えて【解決済み】としてしまったために以下で分かりやすい質問にして再度投稿しました。
https://teratail.com/questions/147438

宜しくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こういう風に質問してください。

Plain

1★こういうリダイレクトがしたい。 2http://~~~~ → https://~~~~~~ 3https://~~~~ → https://~~~~~~ 4・・・・・ 5 6★.htaccessにこう書いている 7~~~~~~~ 8~~~~~~~ 9 10★下記が期待通りでない 11http://~~~~~ が http://~~~~ となってほしいが、http://~~~~になってしまう。

投稿2018/09/19 07:36

otn

総合スコア84499

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

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

pro88

2018/09/19 08:50

すいません間違えて解決済みにしてしまいました。 まだ未解決です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問