Laravel 5.3: настраиваем редиректы, удаляем дубли

20 September 2016, 12:21

Очень часто для SEO оптимизации сайта требуется настройка редиректов во избежании всевозможных дублей. Бич которым страдают даже поисковые машины это множественный слэш в конце, к пример google.de//// как же сделать редиректы с множественных слэшей на домен? Или как убрать на сайте ссылку вида haubau.pro/index.php при открытии которой открывается главная страница? На самом деле всё это делается путём настройки сервера. В своём примере я приведу настройку конфигурации сервера под nginx. Вот мой файл конфигурации: server { merge_slashes off; #убираем множественные слэшы ///// с главной страницы server_name сайт.com www.сайт.com; charset UTF-8; index index.html index.php; if ($request_uri ~* "^(.*/)index\.php$") { # делаем редирект с index.php на корень сайта return 301 $1; } disable_symlinks if_not_owner from=$root_path; include /etc/nginx/vhosts-includes/*.conf; include /etc/nginx/vhosts-resources/сайт.com/*.conf; access_log /var/www/httpd-logs/сайт.com.access.log; error_log /var/www/httpd-logs/сайт.com.error.log notice; ssi on; set $root_path /var/www/аккаунт/data/www/сайт.com/папка_с_приложением/public; listen 192.168.0.1:80; location / { location ~ [^/]\.ph(p\d*|tml)$ { try_files /does_not_exists @php; } try_files $uri $uri/ /index.php?$query_string; # добавляем для работы чпу в Laravel 5.3 rewrite ^/(.*)/$ /$1 redirect; # делаем редирект на роуты без слэшей } location @php { fastcgi_index index.php; fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]"; fastcgi_pass unix:/var/www/php-fpm/аккаунт.sock; fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$; try_files $uri =404; include fastcgi_params; } set $root_path /var/www/аккаунт/data/www/сайт.com/папка_с_приложением/public; return 301 https://$host:443$request_uri; root $root_path; } server { merge_slashes off; #убираем множественные слэшы ///// с главной страницы server_name сайт.com www.сайт.com; ssl on; ssl_certificate "/var/www/httpd-cert/аккаунт/сайт.com_le1.crtca"; ssl_certificate_key "/var/www/httpd-cert/аккаунт/сайт.com_le1.key"; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; add_header Strict-Transport-Security "max-age=31536000;"; charset UTF-8; index index.html index.php; if ($request_uri ~* "^(.*/)index\.php$") { # делаем редирект с index.php на корень сайта return 301 $1; } disable_symlinks if_not_owner from=$root_path; include /etc/nginx/vhosts-includes/*.conf; include /etc/nginx/vhosts-resources/сайт.com/*.conf; access_log /var/www/httpd-logs/сайт.com.access.log; error_log /var/www/httpd-logs/сайт.com.error.log notice; ssi on; set $root_path /var/www/аккаунт/data/www/сайт.com/папка_с_приложением/public; listen 192.168.0.1:443; location / { location ~ [^/]\.ph(p\d*|tml)$ { try_files /does_not_exists @php; } rewrite ^/(.*)/$ /$1 permanent; # делаем редирект на роуты без слэшей try_files $uri $uri/ /index.php?$query_string; # добавляем для работы чпу в Laravel 5.3 } location @php { fastcgi_index index.php; fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]"; fastcgi_pass unix:/var/www/php-fpm/аккаунт.sock; fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$; #try_files $uri =404; include fastcgi_params; } set $root_path /var/www/аккаунт/data/www/сайт.com/папка_с_приложением/public; root $root_path; } Что же мы в итоге получаем из этого конфига? Во первых редиректы с domain.tld/index.php на domain.tld. Во вторых редиректы с роутов domain.tld/login/ на domain.tld/login и наконец самый распространённый баг на множестве движков это редирект с domain.tld////// на domain.tld В конфиге написал что и где прописано

SEQUEL.ONE
1    3623    0
+1

Comments ()

    You need to login to create comments.