htaccessの書き方

このQ&Aのポイント
  • htaccessに設定していないサブドメインにアクセスすると、通常のドメインの内容が表示されてしまいます。存在しないサブドメインにアクセスすると全てメインドメインの内容が表示されてしまうのは、検索エンジン対策としても思わしくないように思えます。
  • 存在しないサブドメインへのアクセスは404エラーになるようにする方法がわかりません。
  • htaccessで使われる言語の知識がなく試行錯誤していますが、思うようにいきません。どなたかアドバイスいただければ助かります。
回答を見る
  • ベストアンサー

htaccessの書き方

RewriteEngine On RewriteCond %{HTTP_HOST} ^dog.abcd.com$ RewriteCond %{REQUEST_URI} !^/dog/ RewriteRule (.*) /dog/$1 RewriteCond %{HTTP_HOST} ^cat.abcd.com$ RewriteCond %{REQUEST_URI} !^/cat/ RewriteRule (.*) /cat/$1 サブドメインを追加するには上記の記述をhtaccessに記入すればよいとサーバー会社の説明にありましたので、その通りにしました。 ところが、htaccessに設定していないサブドメインにアクセスすると、通常のドメインの内容が表示されてしまいます。 登録ドメインがabcd.comだとして、設定していないサブドメインがtest.abcd.comだとすると、test.abcd.comにアクセスするとabcd.comの内容がそのまま表示されてしまいます。 存在しないサブドメインにアクセスすると全てメインドメインの内容が表示されてしまうのは、検索エンジン対策としても思わしくないように思えます。 出来れば、存在しないサブドメインへのアクセスは404エラーになるようにしたいのですが、方法がわかりません。 htaccessで使われる言語の知識がなくチンプンカンプンなので 適当に以下のような感じでいろいろ試行錯誤していますが、なかなか思うようにいきません。 RewriteEngine On RewriteCond %{HTTP_HOST} ^dog.abcd.com$ RewriteCond %{REQUEST_URI} !^/dog/ RewriteRule (.*) /dog/$1 RewriteCond %{HTTP_HOST} ^abcd.com$ RewriteCond %{REQUEST_URI} !^/ RewriteRule (.*) /$1 RewriteCond %{HTTP_HOST} (ここでabcd.comまたはdog.abcd.com以外のリクエストは)$ RewriteCond %{REQUEST_URI} !^/404/ RewriteRule (.*) /404/$1 を表示させる、としたいのですが、このような命令文はありますでしょうか? どなたかアドバイスいただければ大変助かります。

  • HTML
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • naokita
  • ベストアンサー率57% (1008/1745)
回答No.1

最初のサブドメイン云々の内容が良く分からないが、 SetEnvIf Host "^dog\.○○\.com$" hos_NG SetEnvIf Host "^○○\.com$" hos_NG order deny,allow deny from all allow from env=hos_NG とすれば、上記以外はアクセス禁止。 そのアクセスをどうするるかは、ルートに404エラーファイルを置き、 ErrorDocument 403 /404.拡張子 ErrorDocument 404 /404.拡張子

yuutoOK
質問者

お礼

有難うございました。適当に試行錯誤していたところ、教えた頂いた方法とは別の方法で、偶然自己解決できました。

関連するQ&A

  • htaccess wwwがあるのとないので同じページを表示させることはできますか?

    現在●●.comと■■.comの2つのアドレスを使用していて、 ■■.comをマルチドメインにするため下記をhtaccessに記載しています。 www. ■■.comを追加子ドメインにして ■■.comと同じページを見られるようにするにはどうすればよいでしょうか? # Enable RewriteEngine. RewriteEngine On # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} (■■.com) RewriteCond %{REQUEST_URI} !^/(■■.com)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L]

    • ベストアンサー
    • HTML
  • .htaccessでリダイレクトしたいです@さくら

    .htaccessでwwwなしのサイトにリダイレクトをかけたいのですが、うまくいきません。 色んな方法がサイトにありそれを試しているのですが、 一瞬テストでうまくいったと思ったのですが、それ以降うまくいかなくなってしまいました。 使用しているプロバイダはさくらインターネットです。 今までに試したコマンドは下記です。 --------------------------- <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^(www.hoge\.com)(:80)? RewriteRule ^(.*) http://hoge.com/$1 [R=301,L] </IfModule> --------------------------- RewriteEngine on RewriteCond %{HTTP_HOST} www¥.hoge¥.com RewriteRule .* http://hoge.com%{REQUEST_URI} [R=301,L] --------------------------- .htaccess を設置しているディレクトリは /home/hoge/www になります。 ぜひ教えていただけないでしょうか。よろしくお願いいたします。 また、.htaccessは変更してどのくらいで反映されるのか、補足的に教えていただけると助かります。 以上、よろしくお願いいたします。

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

    すいません、よくわかりませんので教えて下さい。.htaccessに記述してhttpにアクセス来たものをhttpsへリダイレクトしたいです。 今の状況は下記です。 AddHandler application/x-httpd-php53 .php RewriteEngine On # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(sanetsu.com) RewriteCond %{REQUEST_URI} !^/(sanetsu.com)/ RewriteRule ^(.*)$ http://www.sanetsu.com/$1 [L] # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(www.burikama.com) RewriteCond %{REQUEST_URI} !^/(www.burikama.com)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L] # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(burikama.com) RewriteCond %{REQUEST_URI} !^/(burikama.com)/ RewriteRule ^(.*)$ http://www.burikama.com/$1 [L] # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress すいません、上記の記述をどのように変更したらhttpsへリダイレクトさせることができますでしょうか?前任のweb担当の方と連絡が付かないので教えていただけたらありがたいです。 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • SuiteXでの.haccessの設置の仕方

    suiteXでマルチドメインで運用をしたいのですが、www.aaa.jpとaaa.jpのドメインがあり、aaa.jpへアクセスされるとwww.aaa.jpへアクセルするようにしたいと思っています。 suiteX内のマルチドメイン設定ツールで下記のように設定しました。 # This file is made by RewriteRule Tool. # Enable RewriteEngine. RewriteEngine On # 404 Error for Multidomain Directories. RewriteCond %{HTTP_HOST} ^centia.jp$ RewriteCond %{REQUEST_URI} ^/(www.aaa.jp|aaa.jp)/ RewriteRule ^(.*)$ /$1 [L,R=404] # Main RewriteRule for multidomain. RewriteCond %{HTTP_HOST} ^(www.aaa.jp|aaa.jp) RewriteCond %{REQUEST_URI} !^/(www.aaa.jp|aaa.jp)/ RewriteRule ^(.*)$ /%{HTTP_HOST}/$1/ [L] .htaccessについては全く分からない者ですいません。 aaa.jpにアクセスするとwww.aaa.jpへアクセスするにはどのように記述したらよいですか?

  • wwwありかつhttpsへリダイレクトさせたい

    .htaccessに以下の記述をしていますが、 ブラウザでURLに”xxxx.jp”と"http://xxxx.jp"と入力してアクセスすると、 https://xxxx.jpにリダイレクトされてしまます。 ドメインxxxx.jpを.htaccessに記載せずにhttps://www.xxxx.jpにリダイレクトさせる記述をご存知でしょうか? wwwありの場合"www.xxxx.jp"、"http://www.xxxx.jp"は意図したとおり”https://www.xxxx.jp"に転送されています。 --- RewriteEngine On RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] ---

    • 締切済み
    • CGI
  • .htaccess の書き方

    以下の .htaccess では、http://hoge.jp への携帯からのアクセスを http://hoge.jp/mobile ディレクトリへ転送させていますが、これを、 http://m.hoge.jp へ転送するには、どう記述を変えれば良いのでしょうか? ちなみに、使用予定のレンタルサーバでは、サブドメインつきのリクエストで 所定のディレクトリへアクセスさせるには、自分で .htaccess を書く必要が あるとのことです。(設定画面で設定できません) PC・携帯からのhttp://hoge.jp へのアクセスを、それぞれ PC: http://www.hoge.jp (/www/) 携帯: http://m.hoge.jp (/m/) という具合に振分転送させたいのですが・・・。 -------------------------------------- #携帯振り分け Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} !^/mobile RewriteCond %{HTTP_USER_AGENT} DoCoMo [NC,OR] RewriteCond %{HTTP_USER_AGENT} (J-PHONE|Vodafone|Softbank|MOT-) [NC,OR] RewriteCond %{HTTP_USER_AGENT} (KDDI|UP\.Browser) [NC,OR] RewriteCond %{HTTP_USER_AGENT} (PDXGW|DDIPOKET|WILLCOM) [NC,OR] RewriteCond %{HTTP_USER_AGENT} ASTEL [NC,OR] RewriteCond %{HTTP_USER_AGENT} L-mode [NC] RewriteRule ^(.*)$ /mobile/$1 [R,L] #「www」ありに統一 RewriteCond %{HTTP_HOST} ^(hoge\.jp)(:80)? [NC] RewriteRule ^(.*)$ http://www.hoge.jp/$1 [R=301,L]

  • htaccessでhttp⇒https topのみ

    htaccessを使って、homeのみhttp⇒httpsにしたいのですが、ご存知の方いますか。 (例) http://www.abc.com ⇒ https://www.abc.com 下記のような他のページは転送を行う必要はありません。 不要(http://www.abc.com/dfg.html ⇒ https://www.abc.com/dfg.html) 下記に記載したものは、すべて転送されてしまいます。 RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule (.*)?$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

  • 昔に書いた.htaccessの内容がわからない

    5年ほど前から放置していた自作サイトがあるんですが、久しぶりにいじろうと思って.htaccessを開いてみたところ、何のための記述か自分で書いておきながら理解できないという恥ずかしい事態に陥りました。 もともと正式な.htaccessの書き方は知らないので、どこかからコピーしてきてドメインのところだけ書き換えて使ってたんだと思います。 RewriteEngine on RewriteCond %{HTTP_HOST} !^hogehoge.com$ [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^(.*) - [F] これって何をするためのものか、お分かりにかる方、教えていただけないでしょうか? RewriteCondなどでググってみたんですけど、いまいちこれだというものが見つかりませんでした。 悩んだ覚えがあるものとすると、サイトを表示したときにURLにindexファイル名を非表示にしたいとか、wwwを付けないURLにしたいとかぐらいなんですが、これらで検索してもこれとは違って記述が出てきたのでどうも違うようです。

  • htaccess リダイレクトの記述方法

    「wwwなし http://www.abc.net/」から 「wwwありに統一 sslありのhttps://www.abc.net/」にリダイレクトしたいのですが、以下の記述で合っていますでしょうか。よろしくお願いします。 Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^abc.net RewriteRule ^(.*)$ http://www.abc.net/$1 [R=301,L] RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    • ベストアンサー
    • HTML
  • .htaccessに複数の条件を書くには

    .htaccessに以下の2つの処理を書きたいのですが、 単純に空行をあけて続けて書いてよいのでしょうか。 これと、  RewriteEngine on  RewriteCond %{HTTP_HOST} ^www\.example\.com  RewriteRule (.*) http://example.com/$1 [R=301,L] これ  Redirect permanent /example/ http://example.com/ この2つを単純に、  RewriteEngine on  RewriteCond %{HTTP_HOST} ^www\.example\.com  RewriteRule (.*) http://example.com/$1 [R=301,L]  Redirect permanent /example/ http://example.com/ のように書いて大丈夫なのかということです。 初歩的な質問ですが、宜しくおねがい致します。

    • ベストアンサー
    • HTML

専門家に質問してみよう