我有一台具有nginx(php-fpm)的服务器,但我需要将索引设置为index.html。
我的配置是这样:
server {
listen 80 default_server;
#SSL configuration listen *:443 ssl http2;
ssl_certificate /path/to/my.dev.pem;
ssl_certificate_key /path/to/my-key.pem;
root /home/path/to/misite.dev;
index index.php index.html index.htm;
server_name misite.dev ;
location / {
try_files index.html $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|eot|otf|ttf|woff)$ {
add_header Access-Control-Allow-Origin *;
add_header Cache-Control "public, max-age=31536000, immutable";
access_log off;
log_not_found off;
}
location = /robots.txt {
access_log off;
log_not_found off;
}
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
}
有了这个,只有index.html可以正常工作,而对于php则没有任何作用,并且通过删除位置的index.html,一切都可以在php上正常工作,但没有index.html
location / {try_files -> index.html <- $ uri / /index.php?$args;}
您知道我该怎么做才能使两种情况都能正常工作吗?
(index.html和带有php的动态页面,例如mysite.com/tag/my-tag)
我希望我解释得很好。
答案 0 :(得分:0)
使用/index.html
作为try_files
的第一个参数会导致问题。
index
伪指令将按照显示的顺序查找匹配的文件。有关详细信息,请参见this document。
因此,如果您的目录包含多种类型的索引文件,只需按照您希望Nginx对其进行优先排序的顺序构造index
语句即可。
例如:
index index.html index.php;