アプリ版:「スタンプのみでお礼する」機能のリリースについて

.htaccessのRewriteCondで、?page=2 の時だけ / へアクセスさせるにはどうすれば良いでしょうか?

?page=22の時は、そのまま で、
?page=2 の時だけリライト動作させるには?

・下記では何がダメでしょうか?
RewriteEngine On
RewriteCond %{QUERY_STRING} page=2
RewriteRule ^(.*)$ /$1? [R=301,L]

A 回答 (2件)

RewriteCond %{QUERY_STRING} (^|&)page=2(&|$)


RewriteRule ^/?$ /? [L,R=301]

かな?
    • good
    • 0
この回答へのお礼

・回答ありがとうございました
・期待通り動作しました!

・ちなみに、「RewriteRule ^/?$ /? [L,R=301]」の「^/?$ /?」はどういう意味でしょうか?
・「先頭/?末尾」を「/?」へリダイレクト?
・「?」はどういう意味???

お礼日時:2016/12/12 20:58

>>ちなみに、「RewriteRule ^/?$ /? [L,R=301]」の「^/?$ /?」はどういう意味でしょうか?



結構面倒で厄介ですが、RewriteRuleの引数を簡単に。
面倒なので、そう真似れば良いと思います。

それでも色々な局面に出会ったら、googleヘルプフォーラムで質問すれば一発で正解回答の出会います。


RewriteRule の第1引数は正規表現です。
^は行頭、$は行末、/? は / 1文字もしくは0文字を意味します。
つまりパス部分が / のみという意味です。
? を書いて / がゼロ文字の時も許容しているのは
httpd.conf の時は / から始まりますが、.htaccess の場合は行頭の / が無いのでそれに対応するために ? をつけています。

RewriteRule の第2引数は書き換え先のパスです。
最後に ? をつけているのはクエリ文字列を空で上書きするためです。
この?を付けないと /l?page=2 にリダイレクトされてしまいます。
    • good
    • 0
この回答へのお礼

・回答&解説ありがとうございました
・大変参考になりました!

お礼日時:2016/12/12 21:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!