azure/iisで実行されているphpアプリケーションをnginx + fpmコンボに移行する必要がありました。 GNU + Linuxマシン。IISからnginxへの移行:予期せぬ{{"` erron on d {^ anum ^、^ anum}}ファイルへのエントリ
web.config
は含まれています
^power_ranger/(\d{4,9})$ /power_ranger.php?ranger=$2
そして、バーチャルホストの設定の
が、私は次のように置く:<rule name="Some match">
<match url=".*"/>
<conditions>
<add input="{URL}" pattern="^power_ranger/(\d{4,9})$" />
</conditions>
<action type="Rewrite" url="/power_ranger.php?ranger={C:1}"/>
</rule>
は、その後、私はrewrites.map
という名前、次のマップファイルを作成しhttps://serverfault.com/questions/441235/maintaining-redirects-in-nginx-from-an-external-source#441517で見られるの指示に従います。
map $uri $new {
include /home/user/powerangerApp/rewrites.map;
}
if ($new) {
rewrite^$new redirect;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/user/powerangerApp;
index index.php;
server_name _;
location/{
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
は、それから私は、私は次のエラーを取得するのnginxを再ロードしようとすると:
nginx: [emerg] unexpected "{" in /home/user/powerangerApp/rewrites.map:1
だから私の推測ではnginxのは、PCRE正規表現をマッピングすることができないということです。では、どうやってnginxにそれをさせることができますか?
編集1:https://serverfault.com/questions/482372/nginx-httpmapmodule-regex-variables#482391に見られるように
:
私は正規表現を変更しようとしました:
?P^power_ranger/(\d{4,9})$ /power_ranger.php?ranger=$2
そして、まだ同じエラーを得ました。
編集2
は、これまでのところ、私は私のnginxの設定にあれば条件が必要であることを考え出し:
if ($url ~* "^power_ranger/(\d{4,9})$"){
rewrite^/power_ranger.php?ranger=$2
}
しかし、私はエラーを取得:
unknown directive ranger=$2 in /etc/nginx/nginx.conf:^some_number^
あなたはknwoをフェローいますがそれを修正する方法は?あなたは構文エラーだったがある見ることができるように
~\/power_ranger\/(\d{4,9})$ /power_ranger.php?ranger=$1;
: