プロが教えるわが家の防犯対策術!

サブドメインに対する.htaccessについて教えてください。

レンタルサーバーでサブドメインを設定しました。
設定したサブドメイン:http://sub.example.jp

サブドメインの公開フォルダをルートに指定しました。
そのためサブドメインにアクセスするとhttp://example.jpと同じ内容が表示されます。

これを、サブドメインにアクセスした時にサブドメインをパラメータに入れてURLはサブドメインのままでリライト?したいのですがうまくいきません。

やりたいことはhttp://sub.example.jpにアクセスすると
http://example.jp/data?mode=subにリライトしたいです。

以下の.htaccessをルート上にアップロードしました。

RewriteCond %{HTTP_HOST} ^(.*)¥.example¥.jp
RewriteRule ^([0-9a-zA-Z_\-]+)¥.$ /data?mode=$1 [L]

URLをサブドメインのままリライトするにはどうしたらいいのでしょうか?

どなかたご教授お願いします。

質問者からの補足コメント

  • ご回答ありがとうございます。

    パラメータのmodeはデータのIDを参照するものとなっているのですが、
    2行目を
    >RewriteRule ^$ /data?mode=$1 [L]
    に変えると別のデータ(一番新しいデータ)が表示されてしまいます。

    おそらく$1がサブドメイン部分を読み取れていないのだと思います。

    $1の部分に実在するデータIDを入力した.htaccessを設置すると正常に表示されるので
    ただしく読み込まれていないことが原因かもしれませんが、
    やはり解決方法がわかりません。

    何か考えられる原因はありますでしょうか。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/06/01 15:41

A 回答 (2件)

>URLはサブドメインのままでリライト?したい



と、

>やりたいことはhttp://sub.example.jpにアクセスすると
http://example.jp/data?mode=subにリライトしたいです。

がマッチしてないように思います。
サブドメインのままリライトしたいなら、
http://sub.example.jp/data?mode=sub
かと思いますが、要求はどちらなのでしょうか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
説明がわかりにくくてすいません。

やりたいことは、
サブドメインのURL(http://sub.example.jp)にアクセスした時に
URLはそのままで(http://sub.example.jpのまま)で
http://example.jp/data?mode=subを表示させたいと思っています。

そしてサブドメイン(sub)はいくつかあるので、
正規表現を使い入力されたサブドメインの部分(sub)によって
http://example.jp/data?mode=サブドメイン(sub)の
サブドメイン部分(sub)を変えて表示したいのですがうまくいきません。

http://sub.example.jp → http://example.jp/data?mode=sub
http://apple.example.jp → http://example.jp/data?mode=apple
http://flower.example.jp → http://example.jp/data?mode=flower
アドレスは左のサブドメイン型のURLのまま、右のURLを表示させたいです。

一旦サブドメインをsubのみと仮定して
RewriteCond %{HTTP_HOST} ^sub\.example\.jp$
RewriteRule ^$ /data?mode=sub [L]
と記述した.htaccessをトップルートに置くと
URLのアドレスはhttp://sub.example.jpのままで、
http://example.jp/data?mode=subの内容を表示させることはできたのですが、
サブドメインが変わる場合の.htaccessの記述がわかりません。

RewriteCond %{HTTP_HOST} ^(.*)\.example\.jp$
RewriteRule ^(.*)$ /data?mode=sub [L]
としてもInternal Server Errorになってしまいうまくいきません。

サブドメインによって、そのサブドメインをmode=○○○(サブドメイン)にいれて表示させる方法を教えていただきたいと思っています。

よろしくお願い致します。

お礼日時:2017/06/01 14:12

>RewriteCond %{HTTP_HOST} ^(.*)\.example\.jp$


>RewriteRule ^(.*)$ /data?mode=sub [L]

2行目を
RewriteRule ^$ /data?mode=$1 [L]
にするとどうなりますか?

mod_rewrite のデバッグレベルを一時的に上げてみると原因調べやすいかもしれません。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
補足に書いてしまいましたのでお礼に同じ内容を書かせていただきます。

パラメータのmodeはデータのIDを参照するものとなっているのですが、
2行目を
>RewriteRule ^$ /data?mode=$1 [L]
に変えると別のデータ(一番新しいデータ)が表示されてしまいます。

おそらく$1がサブドメイン部分を読み取れていないのだと思います。

$1の部分に実在するデータIDを入力した.htaccessを設置すると正常に表示されるので
ただしく読み込まれていないことが原因かもしれませんが、
やはり解決方法がわかりません。

何か考えられる原因はありますでしょうか。

お礼日時:2017/06/01 15:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!