nginx 配置以实现 SEO 友好的 Laravel 设置

nginx 配置以实现 SEO 友好的 Laravel 设置

我无法立即找到下面第 3 项的解决方案,因此,一旦我解决了该问题,我认为发布我的 Laravel 常规配置会很有帮助,以帮助其他搜索相同问题的人。

这些设置适合寻求 SEO 友好的 Laravel 设置的系统管理员。这不是一个详尽的示例;只是一个满足以下要求的基本配置。请自行填写其余内容。

如何为 Laravel 配置 nginx,以便:

  1. 将所有请求重定向至为站点提供服务https://www.example.com
  2. 直接访问文件,回到中央 index.php 控制器?
  3. 从包含 index.php 的请求中删除它?
  4. 从 URI 中删除尾随斜杠 (/)。

答案1

server {
    listen 1.2.3.4:80;
    server_name example.com www.example.com;
    location / {
        return 301 https://www.example.com$request_uri;
    }
}
server {
    listen 1.2.3.4:443;
    server_name example.com;

    ssl_ ...

    location / {
        return 301 https://www.example.com$request_uri;
    }
}
server {
    listen 1.2.3.4:443;
    server_name www.example.com;

    ssl_ ...

    root /path/to/doc/root;

    # redirect URIs with trailing / to ones without

    location ~ ^(.+)/$ {
        return 301 $1;
    }

    # strip index.php from requests
    # https://www.example.com/index.php/docs
    # becomes https://www.example.com/docs
    # likewise
    # https://www.example.com/index.php
    # becomes https://www.example.com

    if ($request_uri ~* "^/index\.php(/?)(.*)") {
        set $default 'https://www.example.com';
        return 301 "${default}/$2";
    }

    # attempt to serve files in-place,
    # or pass requests onto controller

    location / {
        try_files $uri $uri @controller;
    }

    location @controller {
        rewrite ^/(.*)$ /index.php?$query_string;
    }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_ ...
    }
}

相关内容