我一直使用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配置的教程,所以我不会进一步详细介绍。希望这有助于解决您的直接问题。:)