web-dev-qa-db-ja.com

NginxでURL書き換えを書く方法は?

http://www.myweb.com/like/1234456 に入力してもらいたい http://www.myweb.com/item.php?itemid=1234456

私は設定でこのようなものを書いたが、それは動作しません。

location = ^~/like/ {
                rewrite ^1234456  ../likeitem.php?item=1234456break;
                return 403;
        }

これは単なるテストです。まだ$マッチングを使用していません。

Ngnixサーバーも再起動しますが、それでもリダイレクトは行われません。

24
murvinlai

上記のコードは、$が欠落しており、returnコマンドの使用が不十分なため機能しません。

以下のコードは、バージョン0.8.54を含むNginxで動作します。

以下の形式は次のとおりです。

  1. DesiredURL
  2. 実際のURL
  3. Nginx_Rule

それらはlocation / {}内になければなりません

http://example.com/notes/343
http://example.com/notes.php?id=343

rewrite ^/notes/(.*)$ /notes.php?id=$1 last;

http://example.com/users/BlackBenzKid
http://example.com/user.php?username=BlackBenzKid

rewrite ^/users/(.*)$ /user.php?username=$1 last;

http://example.com/top
http://example.com/top.php

rewrite ^/top?$ /top.php last;

複雑でさらに

http://example.com/users/BlackBenzKid/gallery
http://example.com/user.php?username=BlackBenzKid&page=gallery

rewrite ^/users/(.*)/gallery$ /user.php?username=$1&page=gallery last;
52
TheBlackBenzKid

これを試して、

server {
  server_name www.myweb.com;
  rewrite ^/like/(.*) http://www.myweb.com/item.php?itemid=$1 permanent;
}
2
Satys