2016-03-23 10 views
0

Webサーバーと同じサーバーにJoomla/MariaDBとCMS/PostgreSQLを使用しています。 joomlaの書き換えルールも同様ですが、もう一方のルールでは機能しません。 PostgreSQLのCMSからのURLの構造は次のようになります。Nginx 2種類のCMSのURL書き換え

http://example.com/dir/Something.php?somename=Blah_Setup/Otherstring.php 
http://example.com/dir/Something.php?somename=Blah_Setup/Otherstring.php&new_blah=true 
http://example.com/dir/Something.php?somename=Blah_Setup/Otherstring.php&include=General_Info&worker_id=new 

これは私が持っているものです。

location /sis/ { 
    rewrite ^(/sis)/Modules.php?modname=(.*/)\..*$ $1/$2 last; 
} 

誰もが、私は間違って行くよどこください指摘することはできますか?

+0

フォード訂正ありがとうございました。 –

答えて

0

あり、あなたの書き換えルールには二つの問題です:

  • location /sis/.phpで終わるURIを処理しませんが、そう、彼らは
  • (以降?から)クエリ文字列あなたの書き換えルールを参照することはありませんですあなたが簡単に事前に定義された変数$arg_modnameを使用してmodnameパラメータの値を抽出することができます書き換えパターン

の一部とはみなされません。

/sys/Modules.php URLの全てを書き換える必要がある場合は、ソリューションを簡単に正確に一致する場所で達成される:$arg_modnameでのみURIは書き換えが必要な場合は

location = /sis/Modules.php { 
    rewrite^/sis/$arg_modname last; 
} 

、あなたはそれをラップする必要があります。 if ($arg_modname) { ... }ブロック内にあります。しかし、複雑さが増すため、サーバー構成全体を見ることなく簡単な例を提供することは難しくなります。

+0

私はこの解決法を試しましたが、私にこの答えを与えます: 'Ajax get error ステータス:error HTTPステータス:見つからない URL:http // example.com/dir/Modules.php?modname = Blah_Setup/Otherstring .php' –