2017-10-05 4 views
2

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; 

答えて

0

正規表現をに変更する必要があります。

またnginx.confは次のようになります。

map $uri $new { 
     include /home/user/powerangerApp/rewrites.map; 
} 

server { 
    listen 80 default_server; 
    listen [::]:80 default_server; 

    root /home/user/powerangerApp; 
    index index.php; 

    server_name _; 

    location/{ 
     # On way too many rewrite rules you may avoit the line above 
     try_files $uri $uri/ =404; 

     if ($new) { 
      rewrite^$new redirect redirect; 
     } 
    } 

    location ~ \.php$ { 
     include snippets/fastcgi-php.conf; 
     fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
    } 
} 

リライトのリダイレクトが仕事を得るためには救世主であることが証明されていることを覚えておいてください。

関連する問題