Я перехожу с устаревшего кода на Laravel. Устаревший код находился на простых php страницах и, следовательно, все мои страницы имели расширение. php, когда я посещал их по URL: www.example.com/page.php.
Теперь в Laravel , он изменился на что-то другое: www.example.com/my-page
Я использовал приведенный ниже код в Routes, чтобы перенаправить старое расширение на новую страницу
Route::redirect('page.php', '/my-page', 301); // 301 by default
Это не работает ! Это дает мне ошибку: При посещении URL www.example.com/page.php на новом laravel сервере выдает ошибку ниже
В моем Nginx журнале ниже приведена ошибка
2020/07/13 14:53:25 [error] 22935#22935: *70072 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 110.227.222.202, server: example.com, request: "GET /page.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.3-fpm.sock:", host: "example.com"
Как решить это требование: Перенаправьте 301 все устаревшие страницы (их тысячи) с помощью. php расширение до совершенно новой структуры URL.
Ниже мой NGINX Conf
# Expires map
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/javascript max;
~image/ max;
}
server {
expires $expires;
server_name example.com;
root /var/www/example.com/html/public;
index index.php index.html index.htm index.nginx-debian.html;
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
server {
if ($host = example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name example.com;
return 404; # managed by Certbot
}