wp.bmemo.pw

自分のための覚書・備忘録

未分類

【Nginx】 GETクエリ文字列を含んだURLをフォルダのように振る舞わせる

投稿日:

タイトルが日本語不自由

要するにこれがしたいんです。

に書き換えたいわけです。Apacheならmod_rewriteの設定方法がいろいろあったんですが、Nginxだといまいちパッとしない情報しかなかったので記事にしました。

 

GETクエリ文字列をrewriteする!

単純なサイトの場合、クエリ文字列はできるだけ隠したいんですよね。URLをリダイレクトする方法の一つに「rewrite」を使う手があります。

ですが、単純にリダイレクトしてしまうとブラウザのURLバーもリダイレクト先に変わっていまうわけです。

ユーザーには http://example.com/products/A1254/ でアクセスさせつつ、サーバー内部では http://example.com/products?id=A1254 として処理する


 

location 内で設定する

特定のディレクトリのみで動作させるようにlocation内で設定します

ロケーション「products」内で ^/products/英数字5文字 でアクセスしてきたら /products?id=英数字5文字 として処理します。ユーザ側はhttp://example.com/products/英数字5文字 でアクセスしています。

クエリ文字列付きでアクセスしてきた場合

rewriteの条件を入れ替えて 末尾をbreakからlastに変更しました。breakだと、rewrite実行後はURL評価されないのですが、lastはrewrite実行後、もう一度URLの評価が行われます。

つまり、クエリ付き(http://example.com/products?id=A1254)でアクセスしてきたら、URLを書き換えてリダイレクトする(http://example.com/products/A1254/)。末尾がlastなので書き換えられたURL(http://example.com/products/A1254/)は再評価されます。

再評価されるとhttp://example.com/products/A1254/ は内部的に(/products?id=A1254)としてrewriteされます。

php内で画面変遷時にはクエリ指定で飛ばして、nginx側でディレクトリ表記のURLに書き換えてもらうのもいいですね。


-未分類

執筆者:


comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

関連記事

no image

このブログについて

このWordPressは自分の躓いたところや、やってきたことを記事にして後で見返せるようにするためのものです。Unity、Linux、Androidなどが多くなりそうです。

no image

Chromeブラウザの鬱陶しい右上を削除する

いつの間にかChromeブラウザの右上になんかいる。 よく見たらユーザーを切り替えたり、リモートデスクトップを利用している場合はそのオプションも表示されるみたい 複数アカウント運用の人は便利だけど、い …

no image

【PHP】UserAgentをパースして OS, バージョン, デバイスを解析できる「DeviceDetector」

アクセスしてきたユーザーのUAをパースしてOS、バージョン、ブラウザ等を検出。更に膨大なデータベースからデバイス名まで解析できる「piwik/ DeviceDetector」を使ってみようと思います。 …

【起動しない】MySQLのデータベースを他のディレクトリに移すときの注意点

MySQLのデータベースを移動するときに属性とか無視してコピーしちゃうと、Warning連発したり こうなる。 恐ろしい。 属性を保持したままコピーしよう [crayon-5d800a36c743e1 …

格安SIM専用のスピードテスト / プラン検索サイトを開設しました【MVNO】

格安SIMのスピードテストの記事は数多くありますが、その計測環境はまちまちでアプリも異なれば通信サーバーも異なるためイマイチ信用に欠けるものが多いです。 そこで格安SIM専用と称したスピードテストサイ …