我想重写 nginx 中的 url,以便.php
扩展名可以省略。
这就是我所拥有的,但这对我不起作用。有人知道如何做到这一点吗?
Thanks.
server {
listen 80;
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
}
server {
listen 80;
root /usr/share/nginx/www;
index index.php;
server_name www.example.com;
error_page 404 http://www.example.com/404.php;
autoindex off;
error_log /usr/share/nginx/www/nginx_error.log warn;
location / {
rewrite ^(.*)$ /$1.php;
}
location = / {
rewrite ^ /index.php;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
这是我的整个配置文件。
@Makromat我认为你在评论中提到的404问题是你的/
位置正在解析为/.php
没有文件名,所以为了解决这个问题,我们可以添加另一个位置来处理这种特殊情况
location / {
rewrite ^(.*)$ /$1.php;
}
location = / {
rewrite ^ /index.php;
}
试试这个并告诉我是否有效
EDIT:
好吧,我有一个更好的主意,如果原始 URL 已经包含,第一种情况将会失败.php
扩展,所以最好将其定义为后备解决方案,试试这个
location / {
try_files $uri $uri.php $uri/;
}
尝试将其替换为您当前的 php 块
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)