• ベストアンサー

.htaccessでのリダイレクト分岐方法

お世話になります。 .htaccessに以下の記述をしてリダイレクトしているのですが、 $1の値によってリダイレクトさせたくない場合、 どのように記述すればよいのでしょうか。 RedirectMatch permanent /abc/(.*)\.jpg$ http://hoge.com/data/$1.jpg $1の値は数字で1000以下の場合のみ先頭に0がつきます。 (500の場合は0500など) これをたとえば$1の値が0300以上(1000以下なので先頭に0がついた数値になります) ならリダイレクトさせたくないと言った事は可能でしょうか。 ・/abc/(.*)\.jpgの部分から$1の値を取得する ・取得した値で先頭に0がつく場合はまず0を排除 if($1 <= 300) { RedirectMatch permanent /abc/(.*)\.jpg$ http://hoge.com/data/$1.jpg } みたいな感じになると思うのですが、.htaccessでの記述方法がわかりません。 お手数をおかけしますがご教授いただけますと幸いです。

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

  • ベストアンサー
noname#130824
noname#130824
回答No.2

0001等の一桁や二桁も存在して、先頭の0のみ排除するのでしたら、 RewriteEngine on RewriteRule ^abc/0([0-2][0-9][0-9])\.jpg$ http://hoge.com/data/$1.jpg [R=301,L] 0001等の一桁や二桁も存在して、先頭の連続する0を排除するのでしたら、 RewriteEngine on RewriteRule ^abc/0([1-2][0-9][0-9])\.jpg$ http://hoge.com/data/$1.jpg [R=301,L] RewriteRule ^abc/00([1-9][0-9])\.jpg$ http://hoge.com/data/$1.jpg [R=301,L] RewriteRule ^abc/000([0-9])\.jpg$ http://hoge.com/data/$1.jpg [R=301,L] 一桁や二桁はなく、100以上299未満なら RewriteEngine on RewriteRule ^abc/0([1-2][0-9][0-9])\.jpg$ http://hoge.com/data/$1.jpg [R=301,L] でいけそうな気がしますが試していません。

参考URL:
http://webings.net/htaccess/
bou1025
質問者

お礼

大変遅くなってしまいまして申し訳ありません。 お忙しい中ご回答いただきありがとうございます。 おかげさまで出来ました。 どうしてもわかりませんでしたのでとても助かりました。 本当にありがとうございました。

その他の回答 (1)

回答No.1

こんばんは。 http://japache.infoscience.co.jp/rewriteguide/ ここにIF文の書き方が書いてます。 全部説明するのは難しい・・・。

bou1025
質問者

お礼

大変おそくなってしまい申し訳ありません。 ご紹介いただいたページを参考に色々やってみたのですが 未熟な点で応用がきかずどうしてもエラーになってしまう状態で出来ませんでした。 詳細ページをご紹介いただきありがとうございました。

関連するQ&A

  • htaccessのリダイレクトについて

    html、phpなどの拡張子付きリクエストを、末尾がスラッシュの URLにリダイレクトしたいのですが、方法をご教示ください。 例えば、 http://www.hoge.com/hoge/ へのリクエストを、異なるサーバーの http://www.hoge2.com/hoge/ にリダイレクトしたいと考えており、以下のように記述しています。 #.htaccessの記述 Redirect permanent /hoge/ http://www.hoge2.com/hoge/ しかし、 /hoge/hoge.php のリクエストがあった場合、以下のようにドキュメント名を付加される ので困っています。 http://www.hoge2.com/hoge/hoge.php 宜しくお願いします。

    • ベストアンサー
    • PHP
  • htaccessのリダイレクトがループしてしまう

    http://hoge.com/ で運用しているものを http://hoge.com/foo/ のサブディレクトリに移動させようとしています。 .htaccessに --------------- Redirect permanent / http://hoge.com/foo/ --------------- と記述して http://hoge.com/ にアクセスしたら http://hoge.com/foo/foo/foo/foo/... とループしたような状態になってしまいました。 --------------- RedirectMatch 301 ^/$ http://hoge.com/foo/ --------------- だと http://hoge.com/ にアクセスした時は意図した動作になるのですが http://hoge.com/content1.html は転送されてくれません。 どのように記述したらいいでしょうか? サーバーはApacheを使用しています。

  • .htaccessでリダイレクト

    サイトのディレクトリ構造やファイル名を変えたため、 外部からのリンクが切れてしまっています。 .htaccessを設置したディレクトリ以下で ファイルが見つからない場合、TOPページにリダイレクト、 という動作を実現するにはどう記述すれば良いのでしょうか。 TOPページを http://www.hoge.com/ とすると、 とりあえず思いつくのは ErrorDocument 404 / なのですが、404エラーをエラー表示以外の リダイレクトに使うのが正しいのか分かりません。 こういう目的のリダイレクトの書式もあるのでしょうか。 よろしくお願いします。

  • .htaccessを使用したリダイレクトの書き方

    .htaccessを使った301リダイレクトの書き方を教えてください。 ドメインは移転後も同じものを使用し、下記のようにリダイレクトしたいと考えています。 /bbb/を http://www.aaa.com/blog/bbb/ にリダイレクト。 /bbb/ddd.htmlを http://www.aaa.com/shop/ddd/ にリダイレクト。 ------------------- Redirect permanent  /bbb/ http://www.aaa.com/blog/bbb/ Redirect permanent  /bbb/ddd.html http://www.aaa.com/shop/ddd/ ------------------- こう書いてしまうと、1行目は正常にリダイレクトされるのですが、 2行目が http://www.aaa.com/blog/bbb/shop/ddd/ にリダイレクトされて しまいます。 このような場合、どのように記述さればよろしいのでしょうか?

  • 301リダイレクトの記述方法について

    301リダイレクトの記述方法について、わからないことがあり困っています。 質問は2つあるのですが、2番めはふとした疑問なので、ご存じの方がいれば教えて下さいm(__)m (1) 以下の4つのURLを301リダイレクトしたい場合の記述方法を教えて下さい。 転送元: (1)http://www.example.com/hoge/ (2)http://www.example.com/who/ (3)http://www.example.com/hoge/link/ (4)http://www.example.com/who/test.html 転送先: http://www.abc.com (2) 301リダイレクトの転送元URLの記述方法ですが、相対パスではなく絶対URLで記述するのは間違いに当たるのでしょうか? 相対パス:Redirect 301 /hoge/ http://www.abc.com 絶対URL:Redirect 301 http://www.example.com/hoge/ http://www.abc.com

    • ベストアンサー
    • HTML
  • .htaccessによる301リダイレクト

    www.hoge.jp/test_hoge/ このディレクトリ以下を www.piyo.com に、リダイレクトしたいです。 下記のように.htaccessを記載したのですが、 RewriteEngine On RewriteRule ^test_hoge(.*)$ http://piyo.com$1 [R=301,L] そのファイルはどこへ格納すればいいのでしょうか。 現在ルートディレクトリは /www/test_hoge/ となっています。 .htaccessを/www/の中にいれても /test_hoge/の中にいれてもエラーがおきてしまいます。 ただ、macのテキストエディットで作成しているからかなと思うのですが、そういうことはありえますか? どなたかご回答お願いします。

    • ベストアンサー
    • CSS
  • サイト移転に伴うリダイレクトについて

    このたびサイトをリニューアルすると共に、新しいドメインを取得しました。 その為、古いドメインへのアクセスはすべて新しいドメインにリダイレクトさせたいと思います。 なお、サイト構造は異なる為、全て新しいドメインのトップページ(例:http://www.hoge.com/)にリダイレクトさせたいと思うのですが、出来れば簡単な方法でリダイレクトさせたいと思います。 その為、全ページにmetaタグを設定するのではなく、.htaccessを使用したいと思ったのですが、サイト構造が同一の場合は、下記のような記述でよさそうですが、上記の場合、どのように記述すればよいかわからなかったため、アドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 Redirect permanent / http://www.hoge.com/ 以上、よろしくお願いします。

  • .htaccessを用いて.cgiを.htmlにリダイレクトしたい

    .htaccessを用いて.cgiを.htmlにリダイレクトしたい 現在webサイトで以下のようなURLが表示される掲示板を設置しています。 http://hoge.com/bbs1/bbs.cgi?nd=dd&parent=32 http://hoge.com/bbs1/bbs.cgi?nd=dd&parent=500 (最後の数字は10から500くらいまであります) これを過去ログにするため、html化しました。 http://hoge.com/log1/32.html http://hoge.com/log1/500.html しかし以下のような.htaccessを、/bbs1/以下に設置しても、htmlに転送することができません。 RedirectPermanent /bbs1/bbs.cgi?nd=dd&parent=32 "http://hoge.com/log1/32.html" ちなみに以下のようなhtmlファイル同士の転送はできます。 RedirectPermanent /bbs1/index.html "http://hoge.com/log1/index.html" 301リダイレクトでcgiをhtmlに転送することはできないのでしょうか? もしおわかりになりましたらご教授いただけますと大変有り難いです。

    • ベストアンサー
    • CGI
  • .htaccessのリダイレクトの書き方

    .htaccessのリダイレクト処理で http://sample.com/index.phpにpost情報込みでアクセスがあった場合、 「www統一」 「index.phpなし」 「index.phpなしアドレスにリダイレクトされた場合もpostの値を取得できる」 という条件を満たすコードはどのようにすれば良いのでしょうか? 「www統一」や「index.phpなし」は説明サイトも多いので可能なのですが、リダイレクト後のURLでもpostの情報を取得する方法がわかりません。 どうそよろしくお願いします。

    • ベストアンサー
    • HTML
  • .htaccess でのリダイレクト

    レンタルサーバーを利用していて、ドメインを追加したのですが、制限がありました。 1、新しいドメイン追加の際、メインのドメインに新しいドメインに紐づいたサブドメインが必須 →xxx.comがメインの場合、yyy.comを追加するとyyy.xxx.comが自動的に追加される 2、サブドメインのディレクトリはメインドメインのディレクトリ内にしか作れない →xxx.com/yyy/、yyy.xxx.com、yyy.comと三通りのアクセス手段がある状態 yyy.comからだけアクセスできるようにしたいのですが、.htaccessの設定がどうも上手くいきません。アドバイスいただけませんでしょうか? 下の記述で、サブドメインからのアクセスは回避できました。 RewriteCond %{HTTP_HOST} ^yyy.xxx.com$ [OR] RewriteCond %{HTTP_HOST} ^www.yyy.xxx.com$ RewriteRule ^.*$ "http\:\/\/www\.xxx\.com\/" [R=301,L] 下の記述を追加で、サブディレクトリへのアクセスを回避しようと試みたのですが、yyy.comからアクセスしてもxxx.comへリダイレクトするようになってしまいます。 RedirectMatch permanent ^/yyy$/ / よろしくお願いいたします。

専門家に質問してみよう