Я борюсь с конфигурацией для nginx. Мне нужно добавить суффикс .html
ко всем URL-адресам, которые не t иметь его и сделать 301 редирект на тот же URL с суффиксом. URL-адреса с суффиксом .html
изменять нельзя.
Например:
Любая помощь приветствуется!
Это моя текущая конфигурация для nginx:
server {
listen 443 ssl spdy;
server_name my.server.org;
root /var/www/Web;
index index.html index.php;
client_max_body_size 2G;
# Prevent google indexing of staging environment
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
location / {
try_files $uri $uri/ /index.php?$args;
}
include /etc/nginx/server-config/nginx-static-resources.conf;
location ~ \.php$ {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
# This is a robust solution for path info security issue and works with "cgi.fix_pathinfo = 1" in /etc/php.ini (default)
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_read_timeout 600s;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Добавьте что-то подобное в свою конфигурацию в блоке Location /
.
Например:
location / {
try_files $uri $uri/ /index.php?$args;
if ($request_filename ~* ^.+.html$) {
break;
}
# add .html to URI and serve file
if (-e $request_filename.html) {
rewrite ^/(.*)$ /$1.html last;
break;
}
}
Подтвердите, если это работает, иначе поможет вам в другом.
Примечание:Вы также можете попробовать получить try_files $ uri $ uri / /index.php?$args;
вне Location /
, если это не повлияет на ваше приложение.