今更聞けないNginxのインストール方法 ~URL書き換えについて~

rewrite

これまた簡単!

Apacheでは、相当ゴニョゴニョしないとできませんが
nginxだと、超簡単!
ただし、Apacheで書いていた.htaccessは使えませんので
こちらへ書く必要があります。

とはいえ、ちょっと解説

とはいえ、実瑛に行く前にちょっとだけ出来ることを解説したいと思います。
正規表現では、以下のような扱いが可能です。

    1. = : 完全一致
    2. ^~ : 前方検索(正規表現より優先度が上)
    3. ~ : 正規表現(大文字小文字区別あり)
    4. ~* : 正規表現(大文字小文字区別なし)
    5. なし : 前方検索(正規表現より優先度が下)

また、URLの書き換えを行う場合、こういうこともできます。

  1. last
    rewriteディレクティブの処理を停止し、書き換えられたURIに対して最初から locationを再検索します。
    また、別のlocationにあるrewriteディレクティブは実行されます。
  2. break
    rewriteディレクティブの処理の停止し、locationの検索を停止します。
    また、別のlocationにあるrewriteディレクティブは実行されません。
  3. pernemt(301
    恒久的なリダイレクトをするときに使用します。
    HTTPのステータスコードは「301」を返します。
  4. redirect(302
    一時的なリダイレクトをするときに使用します。
    HTTPのステータスコードは「302」を返します。

ま、小難しい話はここまでにして

実際の設定れを見てみましょう。
これだけなんですw

httpsホストへのリダイレクト

https://*.admkazuya.org/(http://admkazuya.orgも含みます)に飛んできた
リクエストをhttps://www.admkazuya.org/にリダイレクトする設定ですが
ホント、これだけなんです。
(Apacheで苦労していたあれはいったい何なんだ!)

server {
listen 80;
server_name admkazuya.org;

rewrite ^(.*)$ https://www.admkazuya.org$1 permanent;
}

ホスト名の書き換え

また、URLのホストを変えたい場合はこんな感じです。
この場合、hoge.comへのアクセスを fuga.com へ書き換えています。
ドメインの引っ越しなどに便利ですね。

server {
listen 80;
server_name fuga.com;

rewrite ^(.*)$ https://www.hoge.com$1 permanent;
}

URLの書き換え

もちろんURLの書き換えもできます。
以下の例では、test1.html を test01.html パラメータ付きで書き換えています。

server {
listen 80;
server_name www.hoge.com;

rewrite ^/test1(.*)$ http://www.hoge.com/test01$1 permanent;
}

正規表現による書き換え

URLやホストの各所で正規表現を使った文字列操作が可能です。
rewriteでは正規表現を使用可能です。
引数として入力された文字列を$1として受け取って利用できるので、
http://www.hoge.com/rewrite/index.htmlにアクセスすると、

が表示されます。

server {
listen 80;
server_name www.hoge.com;

rewrite ^/(.*)/index.html$ $1.html redirect;
}

以上、nginxのURL書き換えについてお届けしました。

コメント

タイトルとURLをコピーしました