htaccessでリダイレクトとURLの正規化を行う混在した書き方がわからない
- 評価
- クリップ 0
- VIEW 6,381
問題の解決策やヒントを頂ければと思います。
※以下に登場するドメイン名は仮称です。
※仮称のドメインを使うことにより正しい情報をお伝え出来ていませんでした
追記:「firstdomain」を「first-domain」に、「seconddomain」を「second-domain」に修正しました。また、実際は、www有りの「www.second-domain.com」です。
やりたい事
htaccessを用いて、リダイレクトとURLの「https」への正規化を行いたい。
「http(s)://first-domain.jp/folder/」を「https://www.second-domain.com」にリダイレクトの処理と「second-domain.com」へのアクセスのプロトコルすべて「https」に正規化したい。
状況
レンタルサーバー:さくらインターネット
・ルートには現在「first-domain.jp」を振っている
・「firstdomain.jp」直下のサブディレクトリ「folder」に「second-domain.com」を後から振った
・「first-domain.jp/folder/」へのアクセス時は「second-domain.com」への転送中
・「second-domain.com」をSSL化し「https」に正規化する必要が出てきた
・htaccessを調べて試行錯誤書いてみるも、転送処理と正規化処理を混在した書き方がわからずエラーばかり返ってくる
現在
URLの正規化もするために調べ、「mod_rewrite」と言うサーバーサイドの機能で、記述方法に違いがあったことを理解し、Wordpressも利用しているので「mod_rewrite」に合わせて記述してみましたが、エラーになるかCSSや画像などを読み込まなくなるなど一向に掴める気がしません。
もちろんURLの正規化も成功していないのですが…。
以下が調べて試してみたが成功しなかったhtaccessです。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^http://%(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
RewriteRule /folder/ https://www.second-domain.com/
# BEGIN WordPress
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
</IfModule>
恐らくとてつもない勘違いで記法を間違っているか、そもそも技術的に不可能なのかもしれませんが、ご助言頂ければ助かります!
通常(?)の書き方でも「mod_rewrite」の書き方でもかまいませんので、よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
「http(s)://firstdomain.jp/folder/」を「https://seconddomain.com」にリダイレクト
これは、編集前の Redirect permanent /folder/ https://seconddomain.com/
でもいいですし、mod_rewrite であれば下記のようになると思います。
RewriteRule ^folder/ https://seconddomain.com/ [R=301,L]
リダイレクトさせるため、フラグに「R=301,L」を設定。
「seconddomain.com」へのアクセスのプロトコルすべて「https」に
http://firstdomain.com/ は許可するのですよね。
%{HTTP_HOST} で判定して、下記のようになると思います。
RewriteCond %{HTTP_HOST} ^seconddomain\.com$
RewriteCond %{HTTPS} off
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
※RewriteRule の第1引数にはパスを設定します。プロトコル(http://)やホスト名は設定できません。
(2016/03/04 18:55 追記)
「CSSや画像が読み込まれない状態」はおそらく WordPress 用のルールにマッチしてしまっているのだと思います。
.htaccess の一部を folder/.htaccess 以下に移すとどうでしょうか。
(.htaccess)
Redirect permanent /folder/ https://www.second-domain.com/
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
(folder/.htaccess)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.second-domain\.com$
RewriteCond %{HTTPS} off
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.36%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
TaichiYanagiya
2016/03/03 21:36
「正規化」とは?
リダイレクトではなく、URL https://firstdomain.jp/folder/ のままにしたいということですか?
seiji_maemura
2016/03/04 13:17
お伝えるすべき情報がわかり辛い表現になってしまって申し訳ありません。修正しましたので、ご助言を頂ければと思います。
ogaaaan
2016/03/04 13:24
いや、『正規化』って何のこといってますか?という質問です。俺もわからないです。
seiji_maemura
2016/03/04 13:47 編集
質問の意図を理解していませんでした、たびたび申し訳ありません。URLの正規化は調べた範囲では、URLの「www」ありなしを統一したりする事を指すようです。httpプロトコルでページアクセスがあった場合も、URLのプロトコルをhttpsに矯正する時に使われるようです。「正規化」と言う表現が一般的でなく、「要はリダイレクトでしょ」と言う事であれば、そのようになると思います。