Laravel 網址 GET 方式傳值無法接收

問題

在本機實作關鍵字搜尋功能時,透過 form表單傳參數給 Controller

網址格式 domain.tw/article?keyword=123

Controller 接收

$request->query(‘keyword’);

$request->input(‘keyword’);

在本機實作都可以接收到,但是在正式機卻都是 null

解決

後來發現問題出現在 Nginx 中

錯誤

1
2
3
4
5
6
7
location / {
try_files $uri $uri/ /index.php$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

正確

1
2
3
4
5
6
7
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

發現哪裡不一樣了嗎?

不知道何時,複製的範本Nginx index.php?$query_string 卻少了一個?

參考網址: https://laracasts.com/discuss/channels/laravel/query-strings-not-passing-to-controller-anything-based-on-get-not-working