.htaccessの複数条件設定について

このQ&Aのポイント
  • 現在、123.45.67.890か098.76.543.21のどちらかのIPアドレスからhttp://www.example.com/aaa.htmlにアクセスがあった場合、http://www.example.com/bbb.htmlへ転送する.htaccessの複数条件設定の方法を教えてください。
  • 現在、123.45.67.890か098.76.543.21のどちらかのIPアドレスからhttp://www.example.com/aaa.htmlへのアクセスがあった場合、それがhttp://www.hogehogeexample.comからのアクセスである場合にのみ、http://www.example.com/bbb.htmlへ転送する.htaccessの複数条件設定の方法を教えてください。
  • 質問者は.htaccessの複数条件設定についての具体的な方法を知りたいとしています。質問者は、現在、123.45.67.890か098.76.543.21のどちらかのIPアドレスからhttp://www.example.com/aaa.htmlへのアクセスがあった場合、それがhttp://www.hogehogeexample.comからのアクセスである場合にのみ、http://www.example.com/bbb.htmlへ転送する.htaccessの複数条件設定についてのアドバイスを求めています。
回答を見る
  • ベストアンサー

.htaccessの複数条件設定

.htaccessで複数の条件を設定した場合の記述方法について教えてください。 現在123.45.67.890か098.76.543.21のどちらかのIPアドレスで http://www.example.com/aaa.htmlにアクセスがあった場合、 http://www.example.com/bbb.htmlへ転送するように設定しています。 記述は次の通りです。 RewriteEngine on RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.890 [OR] RewriteCond %{REMOTE_ADDR} ^098\.76\.543\.21 RewriteRule aaa.html http://www.example.com/bbb.html ここに、「他サイトhttp://www.hogehogeexample.comからのアクセス」という条件を加えた場合、 どのように記述すれば良いのでしょうか。 つまり、 「http://www.hogehogeexample.comからhttp://www.example.com/aaa.htmlへ飛んできた人のうち、 IPアドレスが123.45.67.890か098.76.543.21の場合のみ、 http://www.example.com/bbb.htmlへ転送する」という設定です。 ご存じの方がいらっしゃいましたら、 何卒宜しくお願い致します。

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

単純に A or B に対して and C を追加するのであれば   RewriteCond A [OR]   RewriteCond B   RewriteRule ・・・・     ↓   RewriteCond A   RewriteCond C   RewriteRule ・・・・   RewriteCond B   RewriteCond C   RewriteRule ・・・・ と分けて書けばいいと思います。ただ「他サイト​http://www.hogehogeexample.com​からのアクセス」という条件はRefererを出してこない環境にも配慮しないとマズイかもしれません(セキュリティソフトが遮断することが多いようです)。

tempoppo
質問者

お礼

shimix様、無事にできました! 本当にありがとうございました、助かりました!

関連するQ&A

  • ネームサーバが、自分自身のIPアドレス情報を変更する場合

    長文で失礼します。 自前で用意したWEB(Apache)サーバとDNS(BIND)サーバがあります(いずれもLinux)。 今回、サーバを運用している回線を切り替えるのにあわせ、サーバのIPアドレスを変更す る必要ができました。 新旧回線(IPアドレス)は併用可能で、現在、すでに両方の回線で同一のサーバにアクセ スできるよう設定されています。なので、WHOIS情報を書き換えた際の浸透待ちの状態で、 アクセスできたりできなかったりということは発生しないはずです(自分の認識では)。 行いたいのは、現在DNSサーバ自身も旧IPアドレスに向けられているのを、新IPアドレス に向くように設定を変更し、その後、旧IPアドレスを廃止するということで、絶対に回避 したいのが外部に公開しているサーバなので「アクセスできない時間帯が発生すること」 です。 ※BINDの再起動時間とかはあってしかるべきと思います。 以下、 旧IPアドレス AAA.AAA.AAA.AAA 新IPアドレス BBB.BBB.BBB.BBB として、ゾーンファイルの内容(といっても本当にサンプルレベルですが)を記述します。 省略しすぎですが、設定内容の書式的な間違いやIPアドレスの書き間違いなど、そういっ た部分での間違いないものとしてみていただいてかまいません。 ==============================================================================ex example.com. IN SOA ns.example.com. root.example.com. ( 2008110501 7200 3600 604800 3600 ) @ IN NS ns.example.com.     ~~省略~~ ns IN A AAA.AAA.AAA.AAA     ~~省略~~ ============================================================================== この場合、上記 ns IN A AAA.AAA.AAA.AAA を、いきなり ns IN A BBB.BBB.BBB.BBB と書き換えてしまって問題ない(アクセスできなくなったりしない)ものでしょうか。 お手数おかけしますが、その他、懸念事項や確認項目がないかなど、どなたかご教授いただけますようお願いいたします。

  • .htaccessを特定のフォルダだけ無効にしたい

    .htaccessに以下のように書いて、 RewriteCond %{THE_REQUEST} ^.*/index.(html|php) RewriteRule ^(.*)index.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L] 「http://example.com/hoge/index.php」などにアクセスされたときにindex.phpを削除して 「http://example.com/hoge/」を表示するようにしています。 例えば、以下にアクセスすると http://example.com/aaa/index.php http://example.com/bbb/index.html http://example.com/ccc/ddd/index.php?p=1 それぞれ以下のアドレスになります。 http://example.com/aaa/ http://example.com/bbb/ http://example.com/ccc/ddd/?p=1 これを、特定のアドレス「http://example.com/tokutei/index.php」にアクセスされたときだけ、 「http://example.com/tokutei/」にせず、そのまま「http://example.com/tokutei/index.php」を表示するようにしたいのですが、 どうすれば良いでしょうか。 「http://example.com/tokutei/index.php?p=1」や「http://example.com/tokutei/index.php?p=1&a=5」などにアクセスされても そのまま表示するようにしたいです。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • htaccessにgoogleアナリティクス

    htaccessのリダイレクト元のアクセスをgoogleアナリティクスで集計したいと思っています。 aaa.comとbbb.comの二つのドメインを持っています。 事情があって、aaa.comは使えなくなったので、htaccessを使ってbbb.comへリダイレクトしています。 aaa.comのアクセスを、googleアナリティクスを使って集計したいと考えています。 どのようにすればよろしいでしょうか? メタタグでの転送は、リダイレクトされない場合があるのと、一瞬aaa.comが表示されてしまう可能性があるので使えません。 よろしくお願いします。

  • 条件で振り分けるhtaccess

    困っています。 今、スマートフォン用のサイトを作成しています。htaccessで、 # Enable RewriteEngine. RewriteEngine On RewriteCond %{REQUEST_URI} !^/sp/.*$ RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry|Windows.Phone) [NC] RewriteCond %{HTTP_COOKIE} !viewmode=pc RewriteRule ^(.*)$ /sp/$1 [R=301,L] という条件で振り分けているのですが、 これに、 「拡張子にgifやjpgがついていた場合は、spには転送しない」とか 「拡張子にgifやjpgがついてなかった場合は、spに転送する」 と言うような条件を追加したいと思っていますが、記述が分からず苦しい状態です。 急いでおり改めて勉強している時間がありません。 どなたかご教示いただけるととても助かります。。

  • htaccessの制御で500エラーが出る

    htaccessで、メンテナンス画面とhtmlファイルのままPHPを実行する記述を 同時に書きたいのですが、そうするとIP除外していない人に500エラーが出ます。 ErrorDocument 503 /maintenance.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx RewriteRule ^.*$ - [R=503,L] </IfModule> Action myphp-script /php.cgi AddHandler myphp-script .php .html さくらのレンタルサーバーですので、"AddType application/x-httpd-php .php .html"ではなく 上のように書くとhtmlでPHPを実行できます。 この記述のままアクセスすると、REMOTE_ADDRでIP除外しているものからは 思い通りにそのまま表示されるのですが、それ以外のものからは500エラーが出る状態と なっています。 希望は、特定IPのみhtmlでPHPを実行する通常アクセス。 特定IP以外は、メンテナンス画面という結果にしたいです。 なにか方法はありますでしょうか?

  • htaccessで動的ページを301転送したい

    http://example.com/abc.php?v=4&p=12 にアクセスしてきたユーザーを http://example.com/xyz.php?v=4&p=12 に301転送したいです。 ただし、 ?以降はころころ数値が変わります。 例えば、?以降に以下のような数値がきた場合も http://example.com/abc.php?hoge=%fg%6d&p=aaa 同様に以下のように301転送をしたいです。 http://example.com/xyz.php?hoge=%fg%6d&p=aaa これを.htaccessを用いて行ないたいのですが、可能でしょうか? ご教授よろしくお願いいたします。

    • 締切済み
    • PHP
  • ドメイン取得後のゾーンの設定でCNAMEを複数設定は特に問題ないのでしょうか?

    この度2つのブログ(typepad)に独自ドメインを割り当てる設定を行いたく、さくらインターネットで独自ドメインを取得しました。 ※ブログ側ではCNAMEで割り当ててくださいという事でした。 独自ドメイン1つで 設定をaaa.example.com とbbb.example.comというようにサブドメインでそれぞれのブログに設定を行いたいのですがこのような設定を1つのドメイン(CNAMEの割り当てでaaa.example.com とbbb.example.comのように複数設定)で行うことは問題ないのでしょうか? さくら側のゾーン設定のページですが一応CNAMEは複数追加することが出来それぞれのブログに割り当てる設定は出来るのですがゾーン設定でCNAMEを追加してもよい数などに制限はないのでしょうか?? またCNAMEを複数設定してアクセス上何か問題がある様なことがあれば教えてください。素人的な質問で申し訳ありませんがよろしくお願いします。

  • Outlook2007仕分けルールによるBCCの転送設定

    Outlook2007の仕訳ルールを使って、自分宛に届いたメールの転送を行いたいのですが、BCCで送られたメールを転送することができずに困っています。   [宛先]または[CC]に自分の名前がある場合、   aaa@example.com(転送先のアドレス)へリダイレクトする というル-ルを設定済みです。 回答履歴から   受信者のアドレスに特定の文字が含まれる場合   aaa@example.com(転送先のアドレス)へリダイレクトする   [宛先]または[CC]に自分の名前がある場合を除く を設定したところ、ウィザードで「サーバーのみの処理を、クライアントのみの条件や処理とまとめて使用することはできません。」と、エラーが返り、設定できません。 どなたか、お分かりになる方がいらっしゃいましたら 手順をご教示ください。 宜しくお願いします。

  • .htaccessで複数設定するには?

    .htaccessを使って「特定のIPアドレス・ホストからのアクセスを拒否」と 「特定のリンクからのアクセスを拒否 」の2つを一緒に設定したいのですが、 どうすればいいのでしょうか? 単独での書き方はそれぞれ調べて分かったのですが、1つにまとめての記述方法が分かりません。 --------------------------------------------------- order allow,deny allow from all deny from ●● deny from ○○ deny from ▲▲ deny from △△ SetEnvIf REFERER "http://○○○.com/" Ref1 Order Allow,Deny Allow from all Deny from env=Ref --------------------------------------------------- といった感じに記述したものの、全く動作してくれません。 ご存知の方いらっしゃいましたら、宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • 【DNS】複数ドメインのネームサーバについて

    1台のDNSサーバで4つのドメインを管理している場合のネームサーバはそのサーバのホスト名を使って、ネームサーバを統一したほうがいいのか。それとも各ドメイン毎に割り振った方がいいのか。詳細は下記質問事項に記載致しました。構成として(1)案、(2)案のどちらの方が問題ないのかどうかを、ご存知の方がありましたらご教授お願い致します。 *下記、すべて仮となっております。 ■構成 ▼管理ドメイン aaa.net bbb.com ccc.jp ddd.info ▼HOSTNAME dns777.aaa.net ▼DomainNamePointer 40.30.20.10.in-addr.arpa = dns777.aaa.net ▼DNSサーバIPアドレス 10.20.30.40 ■質問事項 (1) 案 aaa.net nameserver = dns777.aaa.net bbb.com nameserver = dns777.aaa.net ccc.jp nameserver = dns777.aaa.net ddd.info nameserver = dns777.aaa.net 40.30.20.10.in-addr.arpa = dns777.aaa.net (2)案 aaa.net nameserver = ns.aaa.net bbb.com nameserver = ns.bbb.com ccc.jp nameserver = ns.ccc.jp ddd.info nameserver = ns.ddd.info 40.30.20.10.in-addr.arpa = ns.aaa.net 40.30.20.10.in-addr.arpa = ns.bbb.com 40.30.20.10.in-addr.arpa = ns.ccc.jp 40.30.20.10.in-addr.arpa = ns.ddd.info