• 締切済み

クエリ付きURLをクエリ無しURLにリダイレクト

お世話になります。 旧サイト・クエリ付きURLを新サイト・クエリ無しURLに301リダイレクトさせる方法が知りたいです。 旧サイト:"http://www.example.jp/index.php?option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62&limitstart=0&lang=ja" 新サイト:"http://www.example.jp/brand/nike" 以下は、途中まで記述した設定です。 RewriteCond "%{QUERY_STRING}" "^option=com_virtuemart&page=shop.browse&manufacturer_id=4" [OR] RewriteCond "%{QUERY_STRING}" "^option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62" [OR] RewriteCond "%{QUERY_STRING}" "^option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62&limitstart=0" [OR] RewriteCond "%{QUERY_STRING}" "^option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62&limitstart=0&lang=ja" [OR] RewriteCond "%{QUERY_STRING}" "^option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62&limitstart=0&lang=en" [OR] RewriteRule パターン http://www.example.jp/brand/nike [R=301,L] orailly「Apache クックブック」を見ながら設定をしているのですが、RewriteRule で正規表現パターンを設定するところで躓いています。何を設定したらよいのか見当がつきません。 ご教授の程、よろしくお願いします。

みんなの回答

  • heburusu
  • ベストアンサー率85% (140/164)
回答No.1

RewriteCondで条件を指定しているので、 RewriteRuleの方は全てにマッチするパターンを指定してあげればよいのではないでしょうか? 以下は任意の1文字が0回以上繰り返すパターン(=全て)をRewriteさせる例です。 >RewriteRule .* http://www.example.jp/brand/nike [R=301,L]

関連するQ&A

  • クエリ付きURLをクエリ無しURLにリダイレクト

    お世話になります。 旧サイトの”クエリ付きURL”を新サイト”クエリ無しURL”にリダイレクトさせる方法が知りたいです。よろしくお願いいたします。 以下は、旧サイトのクエリ付きURLです。 旧サイトURL /index.php?option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62&limitstart=0&lang=en /index.php?option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62&limitstart=0&lang=ja /index.php?option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62&limitstart=0 /index.php?option=com_virtuemart&page=shop.browse&manufacturer_id=4&Itemid=62 /index.php?option=com_virtuemart&page=shop.browse&manufacturer_id=4 以下の新サイトのクエリ無しURLに301でリダイレクトしたいです。 新サイトURL /brand/devoa

  • htaccessでのクエリ付URLのリダイレクト

    .htaccessにて、Perlで作成されたスクリプトのURLを以下のようにmod_rewriteで変換を行っています。 RewriteEngine on RewriteBase /cgi/ RewriteRule ^([0-z]+)/([0-z]+)\.html$ index.cgi?mode=$1&no=$2 通常の場合、 http://example.com/cgi/index.cgi?mode=pv&no=1 といったURLが、mod_rewriteにて http://example.com/cgi/pv/1.html というURL形式でアクセスが可能です。 そこでやりたい事なのですが、上記のpvの箇所をpastという風に変更したいと思っています。 http://example.com/cgi/pv/1.html http://example.com/cgi/past/1.html スクリプト側の問題かも知れませんが、過去ログに移行したデータなどはpastになるのですが、何故かpv(現行ログ)でもアクセス出来てしまいまして、出来れば.htaccessでpastに統一したいと思っています。 そこで単純ながら、Redirect permanentを使い、 Redirect permanent /cgi/view/ http://example.com/cgi/past/ としたところ、リダイレクトはされるのですが、 http://example.com/cgi/past/1.html?mode=view&no=1 となってしまいます。 語尾のクエリ部分「?mode=view&no=1」が出ないようにしたいのですが、どのような方法があるか、ご教示頂けますと幸いです。 RewriteCond %{QUERY_STRING}なども調べて見たのですが、詳しくどう記述すれば良いかわかりませんでした。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • .htaccess 301リダイレクト

    無知な者で解決できずにおります。 ※カテゴリを変更させて頂きました。 宜しくお願い致します。 現在運営しているホームページ(例>http://example.com)のURL正規化(index.html有り無し)を.htaccessにて行おうと下記のように記述したファイルを設置しました。 Options FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.example\.com ⇒※wwwはなしに統一 RewriteRule (.*) http://example.com/$1 [R=301,L] ⇒※wwwはなしに統一 RewriteCond %{THE_REQUEST} ^.*/index.html    ⇒※index..htmlはなしに統一 RewriteRule ^(.*)index.html$ http://example.com/$1 [R=301,L] ⇒※index..htmlはなしに統一 設置後の解析では一応WWWもindex.htmlも「なしに統一」となっているようなのですが、1つ問題が発生した為、現在はhtaccessファイル内のindex.htmlに関する部分を削除しております。 その問題とは、 http://example.com/index.htmlに「iframe」で記述している営業日カレンダーが表示されなくなってしまうという問題です。 ※表示されない・・・サーバー側が表示する「not foundエラー」がフレーム内に表示さているように見受けられます。 実際に記述しているタグは <iframe src="http://example.com/calendar/calendar.cgi?mode=show" id="calendar" frameborder="0" scrolling="no"></iframe> というものです。 何方かお知恵をお貸しくだされば幸いです。 宜しくお願い致します。

  • .htaccessによるリダイレクト

    .htaccessにおいて画像は除くCGIやPHPなどもサイト内のすべてに iモードID取得のための?guid=onを付与するために以下のように記述しましたところ RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^DoCoMo.* RewriteCond %{QUERY_STRING} ^$ RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|swf|pdf|ico)$ [NC] RewriteRule ^(.*)$ http://homepage.jp/$1?guid=ON [R=302,L] 一部CGIにおいてguid=onがURLの最後に付与されていませんでした。 調べてみたところ http://homepage.jp/○○○.cgiや http://homepage.jp/index.htmlのような というURLにはURLの最後にきちんとguid=onが付与されているものの http://homepage.jp/○○○cgi?id=○○○や http://homepage.jp/○○○cgi&○○&○○ のようなURLにはguid=onが付与されていないことが分かり、 これらにもguid=onをつけるには どのように記述したらいいのか困っております。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • 外国のサイトでギター購入の仕方教えてください。

    外国のサイトでギター購入の仕方教えてください。 ベースを購入したいんですが、日本には在庫が無く外国のサイトで購入を考えています。 ですが、すべて英語なので全然わかりません。 外国から発送ということになると送料もすごくかかりそうで、誰か詳しく教えてもらえないでしょうか。 よろしくお願いします。 どちらのサイトの商品も新品ですよね?? http://www.left-handedguitar.com/index2.php?page=shop.product_details&flypage=shop.flypage&product_id=167&category_id=4&manufacturer_id=0&option=com_virtuemart&Itemid=1 http://cgi.ebay.co.uk/Music-Man-StingRay-Black-4-String-Bass-Left-Handed-R-W-/270601360776?pt=UK_Musical_Instruments_Guitars_CV あと$1 899.00はいくらなんでしょうか??

  • htaccessでリダイレクトが効かない

    スマーフォンからWEBへアクセスがあった場合、htaccessで/m/へリダイレクトしているのですが、 検索エンジンアプリ(Google/Yahoo)で検索した結果をクリックすると、 リダイレクトが効かず、PCページのトップページが表示される、 あるいは該当のPCのページが表示されるという問題に直面して困っています。 ただ、iPhoneのSafariの検索窓から検索した結果をクリックすると、 問題なくリダイレクトされます。 RewriteEngine On RewriteCond %{REQUEST_URI} !^/m/.*$ RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry|Windows.Phone) [NC] RewriteCond %{REQUEST_FILENAME} \.(html)$ [NC] RewriteCond %{HTTP_USER_AGENT} !iPad [NC] RewriteCond %{HTTP_COOKIE} !viewmode=pc RewriteCond %{QUERY_STRING} !viewmode=pc RewriteRule ^$ http:\/\/URLを記入しています/m/ [R=301,L] 上記の書き方の何かがおかしいのでしょうか? おわかりになる方いらっしゃいましたら教えていただけませんか。

    • 締切済み
    • CSS
  • RewriteRuleの書き方

    http://hoge.com?ab=111&cd=222 でアクセスした場合、 http://hoge.com/111/cd/222 にリダイレクトさせたいと考えております。 RewriteCond %{QUERY_STRING} ab= [NC] RewriteRule ^/?ab=([0-9a-zA-Z]+)&([0-9a-zA-Z]+)=([0-9a-zA-Z]+)$ /$1/$2/$3 [R] RewriteCond で、QUERY_STRING に ab= が含まれているとき、 RewriteRule を適用する のように書いても上手くいきませんでした。 お手数ですが、どなたかご教示いただければ幸いです。 よろしくお願いいたします。

  • mod_rewriteの書き方に困っています。

    http://www.○○○.com/1/2/3.htmlといった静的なリクエストを、 .htaccessを使って動的リクエストに読み替えています。 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)\.html$ index.php?a=$1&%{QUERY_STRING}[L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)/([^/]*)\.html$ index.php?a=$1&b=$2&%{QUERY_STRING}[L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)/([^/]*)/([^/]*)\.html$ index.php?a=$1&b=$2&c=$3&%{QUERY_STRING}[L] 違うのはディレクトリの階層(=引数の数)で、最大でa~eまで5つです。 ご覧のとおり、引数がいくつの場合でも、条件は同じなのです。 もっとスマートに書く方法があると思い、あれこれ試していますが、 自力ではうまくいかず、この形で運用しています。 技術向上のため、簡潔な書き方があれば知りたいです。 お気づきの書き方をご教示下さい。よろしくお願いします。 なお、php等を使ったスクリプトでの解析の提案ではなく、 .htaccessの記述方法としてのアドバイスをお願いします。

  • mod_rewriteでQUERYパラメータ数操作

    mod_rewriteで、静的化したいのですが、 QUERYパラメータ数が変化する場合には、どうすればよいでしょうか? ■現状 ▼URL /hoge.php?id=1 ▼.htaccess RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^hoge([0-9A-Za-z]+)\.html$ hoge.php?id=$1 [L] QUERYパラメータ数が一個のときは、 hoge1.htmlとなり、うまくいくのですが、 下記URLのようにQUERYパラメータがない場合があり、その場合に、エラーとなります(元のリンク自体も書き変えるので)。 /hoge.php QUERYパラメータ数が変化する(ない場合もある)時の.htaccessは、 どのように書けばよいのでしょうか? ・htaccess内で、条件分け可能なのでしょうか?

    • ベストアンサー
    • PHP
  • マウスオーバーで画像が拡大するには??

    下記サイトのように商品画像にマウスオーバーすると商品がアップになるようにしたいです。 http://www.k-swiss.jp/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=306&category_id=41&option=com_virtuemart&Itemid=2 htmlとcssの基本的なのはわかります。 ご教授よろしくお願い致します。

    • ベストアンサー
    • HTML