Nginx,始终使用特定文件进行特定扩展

时间:2015-08-07 22:23:03

标签: php nginx

不知道怎么说这个或最好的方式问我但是我正在寻找一种方法在nginx中总是为php运行一个特定的文件。

基本上,如果文件是php文件,请改为运行另一个文件。

因此请求是www.domain.com/info.php然后始终运行/home/user/system/request.php

原因是我有一个较旧的工具,我需要调整并希望拆分我的代码,逐步使其与laravel兼容。因此,在所有3000多个文件的顶部添加一个需求,我宁愿加载我的代码,然后使用特定文件的路径加载(这样逐渐地可以在laravel中无缝地重建碎片)。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

尝试 try_files 指令:

location ~ \.php$ {
    try_files $uri /home/user/system/request.php;
    # your php-fpm config
}

http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files

答案 1 :(得分:0)

我假设您的服务器上存在实际的php文件但是尽管如此,您仍然希望使用request.php来代替您概述的原因。

如果是这种情况,那么给出的try_files解决方案将导致重定向循环或仅提供原始文件。

你需要的是一个只会重定向php请求的解决方案,如果不是request.php,如下所示(顺序很重要)。

location ~ (/request\.php)$ {
    # Your PHP params go here
}
location ~ \.php)$ {
    return 301 http://example.com/request.php;
}

这假设request.php位于文档根目录下。

有了这个,对request.php的请求将匹配两个位置块,但conf文件中的第一个将被触发并将运行PHP。

对SomeOtherFile.php的请求将匹配第二个位置块,并被重定向到request.php以及传入的GET参数。