PHP MVCスタイルのルーターは通常、次のような要求を処理しindex.php?route=one/two/three...
ます。スラッシュで区切られたクエリ文字列は、システムがたどるルートを示します(フォルダー>ファイル>関数、または会社>部門>手順>アクションなど)。
リクエストの例は次のとおりです。
GET http://localdomain/user/profile/modify
> /index.php?route=user/profile/modify
> /user/profile.php
> modify()
このすべてを念頭に置いて、nginxサーバー構成を次のように記述しました。
set $i /index.php;
location ~ ^/([a-z0-9-]*)$ { rewrite ^/([a-z0-9-]*)$ $i?route=$1 last; }
location ~ ^/([a-z0-9-]*)/?([a-z0-9-]*)$ { rewrite ^/([a-z0-9-]*)/?([a-z0-9-]*)$ $i?route=$1/$2 last; }
location ~ ^/([a-z0-9-]*)/?([a-z0-9-]*)/?([a-z0-9-]*)$ { rewrite ^/([a-z0-9-]*)/?([a-z0-9-]*)/?([a-z0-9-]*)$ $i?route=$1/$2/$3 last; }
正規表現のベストプラクティスは、これを1つ以上の引数を処理できる単一の行に変更するように私に叫んでいます(おそらくリピーターを使用することによって)。私の正規表現の知識は限られていますが、どうすればよいですか?