これまた簡単!
Apacheでは、相当ゴニョゴニョしないとできませんが
nginxだと、超簡単!
ただし、Apacheで書いていた.htaccessは使えませんので
こちらへ書く必要があります。
とはいえ、ちょっと解説
とはいえ、実瑛に行く前にちょっとだけ出来ることを解説したいと思います。
正規表現では、以下のような扱いが可能です。
-
- = : 完全一致
- ^~ : 前方検索(正規表現より優先度が上)
- ~ : 正規表現(大文字小文字区別あり)
- ~* : 正規表現(大文字小文字区別なし)
- なし : 前方検索(正規表現より優先度が下)
また、URLの書き換えを行う場合、こういうこともできます。
- last
rewriteディレクティブの処理を停止し、書き換えられたURIに対して最初から locationを再検索します。
また、別のlocationにあるrewriteディレクティブは実行されます。 - break
rewriteディレクティブの処理の停止し、locationの検索を停止します。
また、別のlocationにあるrewriteディレクティブは実行されません。 - pernemt(301
恒久的なリダイレクトをするときに使用します。
HTTPのステータスコードは「301」を返します。 - 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書き換えについてお届けしました。
コメント