我无法立即找到下面第 3 项的解决方案,因此,一旦我解决了该问题,我认为发布我的 Laravel 常规配置会很有帮助,以帮助其他搜索相同问题的人。
这些设置适合寻求 SEO 友好的 Laravel 设置的系统管理员。这不是一个详尽的示例;只是一个满足以下要求的基本配置。请自行填写其余内容。
如何为 Laravel 配置 nginx,以便:
- 将所有请求重定向至为站点提供服务
https://www.example.com
? - 直接访问文件,回到中央 index.php 控制器?
- 从包含 index.php 的请求中删除它?
- 从 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_ ...
}
}