Перенаправить все URL-адреса без .html и установить код состояния 301

Я борюсь с конфигурацией для 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;
      }
    }
0
задан 12 August 2016 в 15:06
1 ответ

Добавьте что-то подобное в свою конфигурацию в блоке 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 / , если это не повлияет на ваше приложение.

0
ответ дан 5 December 2019 в 09:41

Теги

Похожие вопросы