我在使用FastCGI启用的NGINX和PHP7中的URL重写方面遇到了问题。
要求如下。
原始网址:http://example.com/somename1.php
响应:它将抛出404错误
原始网址:http://example.com/somename1
回复:它将执行http://example.com/somename1.php
原始网址:http://example.com或http://example.com/
回复:它将执行http://example.com/index.php
我已经浏览了以下网址,但它们不足以满足上述要求。
示例"默认"文件的内容如下。
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;
}
}
有人可以帮我解决这个问题,还是指点我可以获取更多信息的其他页面?
由于
答案 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.com或http://example.com/回复:它 将执行http://example.com/index.php
根据您的样本,通常会在这种情况下使用index
指令。如果无扩展PHP方案混淆了这一点,请使用完全匹配的位置块:
location = / {
rewrite ^ /index.php last;
}
有关详情,请参阅this document。