Nginx try_files配置重定向检查旧URL?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx try_files配置重定向检查旧URL?相关的知识,希望对你有一定的参考价值。
我有一个网站,这些年来有一些重要的URL更改,它有大量的反向链接在网络上踢,我想避免404s。
基本上配置需要......
- 检查文件是否存在
- 如果没有,那么检查它是否存在与php扩展
- 还是没有档案?看看我创建的php重定向处理程序文件(想象一个检查重定向匹配的url的大数组)。
- 还是没有比赛?使用正确的错误页面返回404。
我无法使用这个链式逻辑来使用try_files。这是我当前的配置:
server {
listen 443;
server_name www.domain.co.uk;
root /var/www/domain.co.uk;
default_type text/html;
index index.php;
ssl on;
ssl_certificate /etc/ssl/certs/domain.co.uk.crt;
ssl_certificate_key /etc/ssl/private/domain.co.uk.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ @extensionless-php @redirect-check;
}
location @extensionless-php {
rewrite ^(.*)$ $1.php;
}
location @redirect-check {
try_files @redirector =404;
}
location @redirector {
rewrite ^(.*)$ /redirection-check?request=$request_uri;
}
location ~ .php$ {
try_files $uri @redirect-check;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/run/php/php5.6-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
error_page 400 402 403 404 500 502 503 504 /error?error_type=$status;
}
任何帮助将非常感谢!
语句try_files $uri $uri/ @extensionless-php @redirect-check;
无效,因为命名位置必须是最后一个参数。有关详细信息,请参阅this document。但是无论如何都应该从声明中删除@redirect-check
,以执行步骤(2)。
声明location @redirect-check { try_files @redirector =404; }
除了生成404响应之外什么都不做。它应该被删除。
如果你将try_files $uri @redirect-check;
改为try_files $uri @redirector;
,你应该接近你的要求。
您的/redirection-check.php
脚本需要响应404响应才能继续执行步骤(4)。但是您需要添加fastcgi_intercept_errors on;
以允许error_page
指令处理PHP脚本中的响应代码。有关详细信息,请参阅this document。
所有归功于@RichardSmith都指出了我正确的方向。
这就是我最终得到的结果:
location / {
try_files $uri $uri/ @extensionless-php;
}
location @redirector {
rewrite ^(.*)$ /redirection-check?request=$request_uri;
}
location @extensionless-php {
rewrite ^(.*)$ $1.php;
}
在重定向检查PHP中,它检查数组是否在$ _GET ['request']上匹配,如果匹配,则提供适当的301重定向。如果不匹配则返回404。
以上是关于Nginx try_files配置重定向检查旧URL?的主要内容,如果未能解决你的问题,请参考以下文章