在nginx

时间:2016-02-18 16:26:45

标签: php nginx clean-urls nginx-location

我已经在网上查看了其他几十个问题和参考资料 - 根据我的所有计算,我的设置应该有效,但它没有。

我用php-fpm安装了nginx。如果我尝试访问.php文件,它会正确运行,我会得到正确的结果。我在配置文件中得到了这个:

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}

现在,我想设置我的网络应用,以便/somedir/file自动执行/somdir/file.php,同时仍然在浏览器的地址栏中显示/somdir/file。所以我修改了我的配置以包含以下内容:

location / {
    try_files $uri $uri/ $uri.php?query_string
}

有效,即服务器确实访问.php文件。然而,它不是使用上面现有的location ~ \.php$块执行它,而是简单地将php源代码作为下载内容发送到浏览器中。如果我手动将.php附加到请求的URL,则执行php。

感觉好像一旦服务器匹配try_files$uri.php,它就不会在位置再做一次传递,看看它需要用php文件做什么。我尝试将php块放在location /的上方和下方,但没有区别。

如何才能执行php?

1 个答案:

答案 0 :(得分:0)

您希望将<!-- saved from url=(0014)about:internet -->视为索引文件,以便file.php可以使用domain.com/dir/file.php吗?

为什么不将它重命名为index.php?

您可以在地址栏中添加此参数:

domain.com/dir/

如果没有,您可能需要考虑为nginx编写重写规则以将index index.html file.php index.php; 映射到domain.com/dir/(但您必须为每个需要它的目录执行此操作)