質問: キーワード検索機能を持つブログで、検索結果の2ページ目にキーワードを引き継ぐためにGETを用いて「?s=キーワード&page=ページ」の形にしています。 実際にはマルチバイト文字はエスケープされるので「あ」は「%E3%81%82」に置き換えられて次のようになっています。 ``` http://example.com/blog/?s=%E3%81%82&page=2 ``` しかし、そのリンクにアクセスしてみるとすぐにリダイレクトされて下記のアドレスに転送されます。「%」が「%25」に置き換えられてしまっています。 ``` http://example.com/blog?s=%25E3%2581%2582&page=2 ``` 転送の原因は末尾のスラッシュを消すための処理を.htaccessに記述しているせいです。 ``` RewriteRule ^(.*)/$ /$1 [L,R=301] ``` この処理をなくすか、URLを「〜blog/?s=」の代わりに「〜blog?s=」となるようにリンクを作成するとリダイレクトは発生しないので正しいURLにアクセスすることができます。 しかし、使用しているフレームワーク(Laravel 5.0)のページネーション機能 render() で出力すると不要な末尾の「/」が付加されてしまいます。 ・Laravel のビュー部分 ``` {!! $posts->render() !!} ``` 理想はフレームワーク側で末尾にスラッシュを付けずに render() によるページナビ出力をしたいのですが、.htaccess 側で対処できるのであればそれでも構いません。 リダイレクト時にGETパラメータを正しく保持したままにするにはどうすれば良いのでしょうか?
回答: argusさんのコメントより。 > > `RewriteRule ^(.*)/$ /$1 [L,NE,R=301]` としてみて下さい(`NE` を追加)。`NE` は `No Escape` の意味です。 > > > 関連: RewriteRule Flags - Apache HTTP Server Version 2.4