不知道怎么说这个或最好的方式问我但是我正在寻找一种方法在nginx中总是为php运行一个特定的文件。
基本上,如果文件是php文件,请改为运行另一个文件。
因此请求是www.domain.com/info.php
然后始终运行/home/user/system/request.php
。
原因是我有一个较旧的工具,我需要调整并希望拆分我的代码,逐步使其与laravel兼容。因此,在所有3000多个文件的顶部添加一个需求,我宁愿加载我的代码,然后使用特定文件的路径加载(这样逐渐地可以在laravel中无缝地重建碎片)。
有什么想法吗?
答案 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参数。