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

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

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

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

Q&A

解決済

1回答

979閲覧

.htaccessの記述について

HiroshiMIKAMI

総合スコア11

.htaccess

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

0グッド

0クリップ

投稿2017/08/23 07:26

編集2017/08/25 03:19

現在、NTTPCのホスティングサービスを利用しております。
ついては、以下の状態を実現/実施できる.htaccessの記述を教えてください。

1)NTTPCホスティングサービスにて、aaa.co.jpのドメインを利用また、http://aaa.co.jp/ 及びhttp://wwww.aaa.co.jp/について、SSL証明書を取得(ベリサイン)したため、http→httpsへリダイレクトを実施
2)マルチホストとして、www-ss.aaa.co.jpを設定。www-ss.aaa.co.jpはhttp://www-ss.aaa.co.jpで利用し、かつこのサイトはベーシック認証を実施したい。

現状、以下の内容を.htaccessへ記述し、1)のリダイレクトは実現できた。

RewriteEngine on RewriteCond %{REQUEST_URI} !^/cgi-def/ RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

しかし、以下の内容を.htaccessに追加すると内部エラーになり、2)が実現できません。

RewriteCond %{HTTP_HOST} ^aaa.co.jp$ RewriteCond %{REQUEST_URI} ^/(www-ss.aaa.co.jp)/ RewriteRule ^(.*)$ /$1 [L,R=404] RewriteCond %{HTTP_HOST} ^(www-ss.aaa.co.jp) RewriteCond %{REQUEST_URI} !^/(www-ss.aaa.co.jp)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L]

御手数ですが、ご教授願います。

---2017/08/25 12:17追記
ご指摘いただいた、BOMを修正及び、回答頂いた行の順序を見直しました。
意図する動きにはなっておりませんが、http://www.aaa.co.jp/へアクセスすると、https://www.aaa.co.jp/へリダイレクトされました。
しかし、http://www-ss.aaa.co.jp/へアクセスすると、「このページは表示できません」となります。
いか、htaccessの内容です。

# This file is made by RewriteRule Tool. # Enable RewriteEngine. RewriteEngine on RewriteCond %{HTTPS} off # 404 Error for Multidomain Directories. RewriteCond %{HTTP_HOST} ^aaa.co.jp$ RewriteCond %{REQUEST_URI} ^/(www-ss.aaa.co.jp)/ RewriteRule ^(.*)$ /$1 [L,R=404] # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(www-ss.aaa.co.jp) RewriteCond %{REQUEST_URI} !^/(www-ss.aaa.co.jp)/ RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L] RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

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

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

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

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

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

hotta

2017/08/23 08:17

コード部分を範囲指定して<code>をクリックしてください。
HiroshiMIKAMI

2017/08/24 05:35

ご指摘ありがとうございます。修正いたしました。
hotta

2017/08/24 05:39

『NTTPCのホスティングサービス』ってよくわからないのですが、.htaccess で設定する(httpd.conf は触れない)タイプなんでしょうか?
HiroshiMIKAMI

2017/08/24 06:04

ありがとうございます。ホスティングサービスのため、アクセス制御(?)が.htaccessのみとなりhttpd.confは触れられません。
hotta

2017/08/24 08:04 編集

『内部エラー』の正確な内容と発生タイミングを記載してください。あと、これら全部(合わせて10行)が、単一の .htaccess ファイルに書かれているんでしょうか?
HiroshiMIKAMI

2017/08/24 08:28 編集

内部エラーになるタイミングは、6行を追加(下のcode部分)を追加した時です。同時に、正常にアクセスできていたwww.aaa.co.jpも内部エラーになります。 また、上記すべての行を単一の.htaccessに記述をしております。
HiroshiMIKAMI

2017/08/25 01:52

すいません。多分意図することが伝わっていないですよね。。。www.example.comはhttpsにリダイレクトし,www-ss.example.comはリダイレクトしない.htaccessの記述はどのようにすれば良いのでしょうか?
CHERRY

2017/08/25 02:16

お使いなのは、WebARENA でしょうか? アクセスログとエラーログが、見れると思うので内部エラーが表示された時点のログを質問に追記していただけないでしょうか?
HiroshiMIKAMI

2017/08/25 02:40

ありがとうございます。エラーログはInvalid command '\xef\xbb\xbf#', perhaps misspelled or defined by a module not included in the server configurationになります。
CHERRY

2017/08/25 02:52 編集

ファイルの先頭に UTF-8 の BOM が、ついているみたいですね。  エディタで、ファイルを保存するときに UTF-8 (BOM無し) で、保存してください。 これでもエラーが出ているようなら 再度 ログの内容を記入してください。
HiroshiMIKAMI

2017/08/25 03:02

失礼しました。修正したところ内部エラーは収まり、Webエラーログも出なくなりました。しかしながら、意図する動きにはなっておりません。。。
guest

回答1

0

ベストアンサー

今回の例だと、たとえば http://www-ss.example.com/abc/ にアクセス
された場合、2行目と3行目の and 条件にマッチするので4行目が適用され、
https://www-ss.example.com/abc/ にリダイレクトされると思います。

このため、2行目と3行目の and 条件に加えて、これらを適用する対象の
FQDN(5行目などのような記載)を4行目の RewriteRule の前に挿入して
やったらうまくいきませんか?

(5行目以降を追加したら『内部エラー』になるというのはよくわかりません。
『内部エラー』というのが日本語で表示されるのですか?)

投稿2017/08/25 02:05

編集2017/08/25 02:06
hotta

総合スコア1613

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

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

HiroshiMIKAMI

2017/08/25 02:42

ありがとうございます。 内部エラーInternal Server Errorとなります。コードは500です。 4行目の前に入れてみましたが、同様に内部エラー(500)になってしまいました。
hotta

2017/08/25 02:49

Invalid command '\xef\xbb\xbf#', 。。。 ファイルの先頭にBOM が入っているみたいですね。 Windows 標準のメモ帳ではなく、サクラエディタや EmEditor 等、 別のエディタを使ってください。
hotta

2017/08/25 03:10

↑この情報は、質問欄に追記してください。
HiroshiMIKAMI

2017/08/25 03:20

ご指摘ありがとうございます。修正いたしました。
HiroshiMIKAMI

2017/08/25 03:22

ブラウザを替えて再度アクセスしたところ、転送のループが発生しているというメッセージでした。 ログについても、エラーログは無く、アクセスログは同じリクエストがじっと続いているような状況でした。
HiroshiMIKAMI

2017/08/25 04:56

ありがとうございます。 1点だけhttp://aaa.co.jp/ とhttp://www.aaa.co.jp/ の扱いはご認識の通り、httpsへのリダイレクトです。 http://www-ss.aaa.co.jp/については、ベーシック認証を実施したいと思っております。 なお、http://www-ss.aaa.co.jp/は、ホスティングサービスの仕様で、マルチドメインとして、 /home/www-ss.aaa.co.jpを参照するようにするために、記述をしております。 ですので、http://www-ss.aaa.co.jp/www-ss.aaa.co.jp/へのアクセスではなく、http://www-ss.aaa.co.jp/の参照ディレクトリは/home/www-ss.aaa.co.jp配下にしたいと考えております。
hotta

2017/08/25 05:01 編集

> /home/www-ss.aaa.co.jpを参照するようにするために、記述 どこに、どう記述しているのでしょうか? また、https://aaa.co.jphttps://www.aaa.co.jp の参照ディレクトリはどこに、どう記述しているんでしょうか?
HiroshiMIKAMI

2017/08/25 05:13 編集

上の質問で、2つめのコード内の6行のうち、後ろ3行がwww-ss.aaa.co.jpの参照ディレクトリとして、/home/www-ss.aaa.co.jpを記述していると思っております。 なお、前3行はhttp://www.aaa.co.jp/www-ss.aaa.co.jp/へのアクセスをさせたいための記述と認識しております。 また、www.aaa.co.jp及び、aaa.co.jpは/homeを参照ディレクトリとしているので、記載をしておりません。
hotta

2017/08/25 06:29 編集

以下でそれっぽい感じにはなりましたが、全く同じ環境は作れないので こちらで確認できるのはここまでのようです。 ディレクトリ名は混乱するので /admin に変えています。 その他、違いは適宜読み替えてください。 RewriteEngine on # LogLevel alert rewrite:trace1 # 有効な3ドメインのみ受け付ける RewriteCond %{HTTP_HOST} !^aaa.co.jp$ RewriteCond %{HTTP_HOST} !^www.aaa.co.jp$ RewriteCond %{HTTP_HOST} !^www-ss.aaa.co.jp$ RewriteRule ^(.*)$ /invalid [R=403,L] # 管理画面以外への http アクセスを https にリダイレクト RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} !^www-ss.aaa.co.jp$ RewriteCond %{REQUEST_URI} !^/admin/ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # 管理画面以外への http(s) アクセスを無効とする RewriteCond %{HTTP_HOST} ^www-ss.aaa.co.jp$ RewriteCond %{REQUEST_URI} !^/admin/ RewriteRule ^(.*)$ /invalid [R=503,L] <Directory /var/www/html/admin> AllowOverride All </Directory> ( /var/www/html/admin/.htaccess に Basic 認証の定義を記載)
HiroshiMIKAMI

2017/08/25 08:15

ありがとうございます。 こちらの環境に変更し、無事に実施したい事項ができるようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問