56339


以下の旧URLに来た場合、301リダイレクトで新URLへ転送したいのですが、  
.htaccessのRewriteRuleはどのように書けばいいでしょうか? いろいろ試していますが、  
うまくいきません。アドバイスいただければ幸いです。

旧URL `https://example.com/stay/db/database.cgi?cmd=dp&num=1234&dp=ad.html`  
新URL `https://example.com/stay/db/database.cgi?cmd=dp&num=1234&dp=all.html`

【条件追記】上記新旧URLに書きました「1234」という部分は、実は複数あるうちの一つでして、他に「2354」になったURLもあります。この数字が「1234」の時だけリダイレクトしたいのです。

【テスト結果】

URLが新URLへリダイレクトされましたが、以下のエラー画面が出て、

「このページは動作していません 「ドメイン名」でリダイレクトが繰り返し行われました。Cookie を消去してみてください.  
ERR_TOO_MANY_REDIRECTS」

新URL
[https://example.com/stay/db/database.cgi?cmd=dp&num=1234&dp=all.html](https://example.com/stay/db/database.cgi?cmd=dp&num=1234&dp=all.html)  
の画面が表示されなくなりました。(代わりに上記エラー画面が出ます)  
(Cookie を消去してみましたが同じで上記エラー画面が出ます)

【成功しました】

1234があるとリダイレクトし続けるようなので、以下のようにしましたら無事成功しました。

  
RewriteEngine on  
RewriteCond %{REQUEST_URI} !=/stay/db/database.cgi?cmd=dp&num=1234&dp=all.html  
RewriteCond %{QUERY_STRING} &num=1234&dp=ad.html  
RewriteCond %{QUERY_STRING} ^(. _& dp)=(.+)$  
RewriteRule ._ <https://%>{HTTP_HOST}%{REQUEST_URI}?%1=all.html [R=301,L]  

アドバイスありがとうございました。感謝です。  
上記結果で、何か不備がありましたら、ご教示をよろしくお願いいたします。


CC BY-SA 4.0
2019-07-02T23:24:58.987
56332
2019-07-03T06:22:45.557
2019-07-03T06:01:59.487
34954
34954
question
.htaccess
.htaccessでの別ページへのリダイレクト


これで通じますかね？  
また、恐らくサンプルURLだとおもいますが、構造が全く同じであればこれでいけると思います。  
一度試して、問題が無ければ`R=301`へ変更してください。

* * *

**追記**  
基本的に条件が増えた場合は`RewriteCond`を増やせば問題ありません。  
また、質問文を見て他の人が回答できるように質問してください。  
質問する際は次のページが参考になります。  
[最小限の・自己完結した・確認可能なサンプルコードの書き方](https://ja.stackoverflow.com/help/minimal-
reproducible-example)

(同ページにリダイレクトした場合にall.htmlは除外する条件を追加）

[code]

    # Rewriteモジュールが導入されている場合のみ処理
    <IfModule mod_rewrite.c>
      # Rewriteモジュールを有効化
      RewriteEngine on
      # 条件定義1
      RewriteCond %{QUERY_STRING} !(&dp=all.html)$
      # 条件定義2
      RewriteCond %{QUERY_STRING} &num=1234&
      # 条件定義3
      RewriteCond %{QUERY_STRING} ^(.*&dp)=(.+)$
      # プロトコル + ホスト名 + リクエストURI + 定義した条件グループの1つ目 + 固定値
      RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}?%1=all.html [R=302,L]
    </IfModule>
    
[/code]


CC BY-SA 4.0
2019-07-03T04:21:46.063
56339
2019-07-03T06:22:45.557
2019-07-03T06:22:45.557
7676
7676
56332
answer