禁用.php扩展名但运行没有.php的文件作为php文件

时间:2017-02-03 17:31:26

标签: url nginx php-7

我在使用FastCGI启用的NGINX和PHP7中的URL重写方面遇到了问题。

要求如下。

原始网址:http://example.com/somename1.php
响应:它将抛出404错误

原始网址:http://example.com/somename1
回复:它将执行http://example.com/somename1.php

原始网址:http://example.comhttp://example.com/
回复:它将执行http://example.com/index.php

我已经浏览了以下网址,但它们不足以满足上述要求。

  1. How to remove both .php and .html extensions from url using NGINX?
  2. remove .php from url with rewrite rule
  3. remove .php extension from url in nginx
  4. 示例"默认"文件的内容如下。

    server {  
        listen 80 default_server;  
        listen [::]:80 default_server;  
        root /var/www/html;  
        index index.php index.html index.htm index.nginx-debian.html;  
        server_name _;  
        location / {  
            try_files $uri $uri/ =404;  
        }  
        location ~ \.php$ {  
            include snippets/fastcgi-php.conf;  
        }  
        location ~ /\.ht {  
            deny all;  
        }  
    }  
    

    有人可以帮我解决这个问题,还是指点我可以获取更多信息的其他页面?

    由于

1 个答案:

答案 0 :(得分:0)

您有三个要求:

  

原始网址:http://example.com/somename1.php回复:它会抛出   404错误

使用internal指令。有关详细信息,请参阅this document

例如:

location ~ \.php$ {
    internal;
    ...
}
  

原始网址:http://example.com/somename1响应:它将执行   http://example.com/somename1.php

有许多方法可以实现无扩展的PHP。您问题中的第一个链接使用try_files,命名位置和rewrite

  

原始网址:http://example.comhttp://example.com/回复:它   将执行http://example.com/index.php

根据您的样本,通常会在这种情况下使用index指令。如果无扩展PHP方案混淆了这一点,请使用完全匹配的位置块:

location = / {
    rewrite ^ /index.php last;
}

有关详情,请参阅this document