我们说我有一个名为http://example.com/careers
的文件,当我们点击.html
的链接而没有.php
的文件扩展名时,如何提供此文件?和 nginx 的http://example.com/careers?lang=fr
个文件?
请注意,解决方案必须考虑查询字符串。例如,网址可能是/views/careers.php
。
另外,我也想尝试使用子目录的解决方案。例如;如果服务器上的文件夹结构为http://example.com/careers
,我希望/views/careers.php
仍然提供server {
listen 80 default_server;
root /usr/share/nginx/landing-page;
index index.php index.html;
server_name example.com;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
。
我当前的配置如下所示:
declare
l_row_check integer := 0;
begin
select count(*) into l_row_check from main
where rownum = 1;
if l_row_check = 0 then
execute immediate 'truncate table main';
insert --+ append
into main
select * from temp;
execute immediate 'truncate table temp';
end if;
end;
答案 0 :(得分:1)
您可以使用try_files
:
try_files $uri $uri.php $uri/ =404;
答案 1 :(得分:1)
常见解决方案使用try_files
和命名位置。现有的location ~ \.php$
块用于处理.php
个文件。还要避免使用任何if
语句。
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^ $uri.php last;
}
location ~ \.php$ {
try_files $uri =404;
...
}