2010-05-22 184 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'; 
} 
?>