2016-03-23 12 views
0

Web sunucusu olarak Nginx ile aynı sunucuda Joomla/MariaDB ve başka bir CMS/PostgreSQL kullanıyorum. Joomla için yeniden yazma kuralları da işe yarıyor, ancak diğeri için çalışmıyor. PostgreSQL CMS'den URL yapıları şuna benzer:Nginx URL 2 farklı CMS için yeniden yazıyor

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 

Bu Ne sahip:

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

kimse Yanılmışım lütfen nereye gidiyorum işaret edebilir?

+0

Büyü düzeltmesi için teşekkürler Bay Ford. –

cevap

0

Orada, yeniden yazma kuralına iki sorunlar şunlardır:

  • location /sis/.php ile biten URI'lerini işlemez, bu nedenle
  • (itibaren ? itibaren) sorgu dizesi, yeniden yazma kuralı görmek asla değildir yeniden yazma desen

kolayca önceden tanımlanmış değişken $arg_modname kullanarak modname parametrenin değerini elde edebilir bir parçası olarak kabul edilmez. Bir $arg_modname ile sadece bu URI'ları yeniden yazmak gerektiriyorsa

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

, bunu kaydırmak gerekir:

/sys/Modules.php URL'lerin tümünü, çözüm kolayca tam bir eşleşme konumu ile gerçekleştirilir yeniden yazılması gerekiyorsa

if ($arg_modname) { ... } bloğu içinde. Ancak karmaşıklığı arttırır, bu nedenle basit bir örnek, tüm sunucu yapılandırmanızı görmeden sağlaması daha zordur.

+0

Bu çözümü denedim, ancak bana şu cevabı veriyor: 'Ajax hatası alın Durum: hata HTTP durumu: Bulunamadı URL: http // example.com/dir/Modules.php? Modname = Blah_Setup/Otherstring .php' –

İlgili konular