.htaccessに関する質問です。


DirectoryIndex /index.php
order deny,allow
deny from all
allow from 各種携帯IP
ErrorDocument 403 http://ドメイン/pc/NG.html

上記のように携帯以外のIPからのアクセスは全てhttp://ドメイン/pc/NG.htmlへリダイレクトしています。
しかしPCからtestという文字列が入ったURLをリクエストされた場合はhttp://ドメイン/pc/OK.htmlへリダイレクトしたいです。
※携帯の場合はリダイレクトしません。

http://ドメイン/?q=testへのアクセスは/pc/OK.htmlへリダイレクト
http://ドメイン/?q=abctestdeへのアクセスは/pc/OK.htmlへリダイレクト
http://ドメイン/?q=tesへのアクセスは/pc/NG.htmlへリダイレクト
携帯からのアクセスは全て/index.php
サイトの構造上、?q=の後にどの文字列を入力しても/index.phpが表示される仕組みになっています。

PCからtestという文字列が入ったURLをリクエストされた場合のみhttp://ドメイン/pc/OK.htmlへリダイレクトするにはどうしたらよいでしょうか?

ご教示いただけると幸いです。
宜しくお願い致します。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/01/30 13:47:30
  • 終了:2011/02/06 13:50:03

回答(1件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492011/01/30 15:20:41

ポイント60pt

deny from all ではじいてしまうと何もできなくなりますので条件判断の出来るmod_rewriteを用いるなどで対処することになります

DirectoryIndex /index.php
RewriteEngine On
RewriteCond %{REMOTE_ADDR} 携帯IP [OR]
RewriteCond %{REMOTE_ADDR} 携帯IP [OR]
RewriteCond %{REMOTE_ADDR} 携帯IP [OR]
RewriteCond %{REMOTE_ADDR} 携帯IP [OR]
RewriteCond %{REMOTE_ADDR} 携帯IP [OR]
RewriteCond %{REMOTE_ADDR} 携帯IP [OR]
RewriteCond %{REMOTE_ADDR} 携帯IP
RewriteRule ^.+$ - [L]
RewriteRule ^.+q=test.*$ http://ドメイン/pc/OK.html [L]
RewriteRule .* http://ドメイン/pc/NG.html [R=403]

単純にIPではじく場合よりも負荷がかかりますし、自ら穴を空けておくということにもなりますので、あまりお勧めはしません。開発時だけの利用に留めて、キッチリカッチリ削除しておくことをお勧めしておきます

  • id:xptree
    返信が遅れてしまい申し訳ありません。
    今試してみました。
    ご回答頂いた通りに記述したのですが、携帯からアクセスしてもPCからアクセスしてもForbiddenが表示されてしまいます。
    何か足りない記述がございましたらコメント頂けると幸いです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません