如何在使用NGINX时摆脱重定向



我一直使用Apache作为我的Web服务器,但是由于其他原因,我现在不得不使用NGINX。它现在在 AWS Linux AMI 上运行。这是我第一次玩,我设法让一个空白配置工作,但是当我添加从 .htaccess 转换的规则时,我一直让网站进入重定向。不确定是否是我的配置。另外,我不确定您是否需要为 443 单独一个?

server {
  listen 80;
  server_name sitename.co.uk www.sitename.co.uk;
  root /var/www/html/Project;
  location / {
    try_files $uri $uri/ /index.php?$args;
    if (!-e $request_filename){
      rewrite ^/([^.]+)$ /$1.php break;
    }
    if ($http_host ~* "^sitename.co.uk"){
      rewrite ^(.*)$ https://sitename.co.uk/$1 redirect;
    }
    if (!-e $request_filename){
      rewrite ^(.*)$ /index.php break;
    }
    if (!-e $request_filename){
      rewrite ^(.*)$ /index.php break;
    }
  }
access_log /var/log/nginx/sitename.access.log;
error_log /var/log/nginx/sitename.co.uk.error.log;
}

任何帮助都会很棒。

这可能是由于这部分导致了无限循环:

if ($http_host ~* "^sitename.co.uk"){
  rewrite ^(.*)$ https://sitename.co.uk/$1 redirect;
}

这似乎是为了将http重定向到https。在nginx中实现此目的的正确方法是使用两个单独的服务器块。一个侦听 443(https( 并配置 ssl,另一个侦听 80(http(,内容如下所示:

server {
 listen 80;
 server_name sitename.co.uk www.sitename.co.uk;
 return 301 https://sitename.co.uk$request_uri;
}

网络上其他地方有很多关于nginx配置的教程,所以我不会进一步详细介绍。希望这有助于解决您的直接问题。:)

相关内容

  • 没有找到相关文章

最新更新