2010-05-22 180 views
2

爲了方便起見,我設置了多個域或通配符支持的nginx,而不是設置50多個不同的站點 - 可用/ *文件。希望這足以向你展示我想要做的事情。有些是靜態網站,有些是通常WordPress的安裝動態。nginx多域虛擬主機配置

如果index.php存在,一切都按預期工作。

如果請求的文件不存在(missing.html),則由於重寫而給出500錯誤。記錄的錯誤是:

* 112重寫或內部重定向循環在處理「/index.php/index.php/index.php/index.php/index.php/index.php/index.php/的index.php/index.php文件/ index.php文件/ index.php文件/ missing.html」

我目前使用的基本nginx的配置是:

`

listen 80 default; 
server _; 

... 

location/{ 
    root /var/www/$host; 

    if (-f $request_filename) { 
      expires max; 
      break; 
    } 

    # problem, what if index.php does not exist? 

    if (!-e $request_filename) { 
      rewrite ^/(.*)$ /index.php/$1 last; 
    } 
} 

... 

`

如果一個index.php不存在,並且該文件也不存在,我希望它錯誤404。目前,nginx不支持多個條件如果是嵌套的,如果是這樣,我需要一個解決方法。

+0

您是否在重寫中嘗試過「break」而不是「last」? – rzab 2010-05-22 19:51:46

+0

不,但是我現在能夠使用try_files而不是if/rewrite條件來使其工作。 'try_files $ uri $ uri//index.php$uri @ 404;'如果index.php不存在,它將轉到位置@ 404 – Poe 2010-05-23 14:39:49

+1

'try_files'是圍繞這些問題的建議方法,因爲'if'行爲不太好,不鼓勵使用。您可以直接在'try_files'中指定返回狀態,而不是指定的位置:'try_files $ uri $ uri//index.php$uri = 404;' – 2010-05-23 15:17:44

回答

0
if ($_SERVER['HTTP_HOST'] == 'desideshat.com') 
{ 
$vboptions['bburl'] = 'http://www.desideshat.com'; 
} 
else 
{ 
$vboptions['bburl'] = 'http://www.vedesi.com'; 
} 
?>