我有一个网站,最近从 Cold Fusion 迁移到 Wordpress。为了确保旧链接仍然有效,我们的开发人员编写了一个重定向脚本,将旧 URL 转换为新 URL。
我设置了一个虚拟重定向,但由于某种原因,旧式 URL(例如 'www.mysite.com/page.cfm?___BIG_NASTY_STRING')被发送到 php 脚本的文本或尝试实际下载文件 - 它没有执行。
这是我的配置文件的相关部分:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTP_HOST $host;
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found on;
}
#Redirects for old CFML-style links
location /page.cfm {
alias /legacy/redirect.php;
}
有人知道如何让redirect.php 执行而不是仅仅显示或下载吗?
谢谢!
答案1
这是您的问题:
location /page.cfm {
alias /legacy/redirect.php;
}
这不是重定向。你只是要求 nginx 提供该文件,它确实做到了。
在这种情况下,您需要一个内部重写,它将重新启动使用您想要提供的 PHP 文件的请求处理。rewrite
指令用于此目的。例如:
location /page.cfm {
rewrite . /legacy/redirect.php last;
}