从某些位置找不到网站 404

website 404 Not Found from some locations

我已经将网站从物理服务器 运行 apache 迁移到虚拟机 运行 nginx。

当我直接访问网站时 link,网站已启动:http://www.via-ap.com

但是当我转到 Google 并单击右侧面板上的网站时,我收到 404 错误。

见下文:

https://www.google.fr/search?ei=Ri3jW4TXDZGalwSL46vQAQ&q=via+ap&oq=via+ap&gs_l=psy-ab.3...4929.5483.0.5646.6.5.0.0.0.0.0.0..0.0....0...1c.1.64.psy-ab..6.0.0....0.76V4PDLEtNM

我在许多浏览器和私有模式下进行了这些测试。

我的默认 nginx vhost conf 是:

server {
server_name _;
listen 80 default_server;
listen 443 ssl default_server;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
return 404;
}

然后每个网站都有自己的 conf,如下所示:

server {
    listen 80;
    listen [::]:80;
    server_name website.com;
    return 301 https://www.$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name www.website.com website.com;
    root /home/website/www/;
    index index.html index.htm index.php;

    access_log /var/log/nginx/website.access_log;
    error_log /var/log/nginx/website.error_log info;

    location ~ \.php$ {
            fastcgi_pass unix:/var/run/php/php7.2-fpm-website.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    include /etc/nginx/conf/website.conf; /* file where strict transport security headers are defined */

    ssl_certificate /etc/letsencrypt/live/website.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/website.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/website.com/chain.pem;

    include /etc/nginx/conf/ssl.conf;
}

你知道为什么吗?

谢谢 L.

已找到解决方案。 在第一个服务器块上(收听 80)

  • 正如你先说的,除了website.com[=24=,我还添加了www.website.com ]

  • 然后我将 return 301 https://www.$host$request_uri; 替换为 return 301 https://$host$request_uri;