使用PHP和NGINX进行伪重写

使用PHP和NGINX进行伪重写,php,.htaccess,nginx,Php,.htaccess,Nginx,几年前,我编写了一个脚本,可以使用404错误和重定向错误重写我的页面(用PHP编写) 有了这个系统,我可以在不接触Apache的情况下重写我的页面——除了通过htaccess。我的系统一点也不安全,但这不是现在的重点 我用的是: .htaccess ErrorDocument 404 /index.php?redirect 还有这个 index.php if(isset($_GET['redirect'])) { if (preg_match("#"."([0-9-]+

几年前,我编写了一个脚本,可以使用404错误和重定向错误重写我的页面(用PHP编写)

有了这个系统,我可以在不接触Apache的情况下重写我的页面——除了通过htaccess。我的系统一点也不安全,但这不是现在的重点

我用的是:

.htaccess

ErrorDocument 404 /index.php?redirect
还有这个

index.php

if(isset($_GET['redirect']))
    {
        if (preg_match("#"."([0-9-]+)-([^0-9](?:.+))#isU", $_SERVER['REDIRECT_URL'], $redirect)) 
        {
            header("Status: 200 OK", false, 200);
            $redirect=abs($redirect[1]);
        }
        else header('Location: '.HOME_PAGE.'-E404.html');
    }
我的问题是:有没有可能像以前一样,用NGINX进行伪重写?因为我不能忍受

我的目标是使我的脚本可移植。没有人需要更改NGINX配置或APACHE配置。并且还制作了一个重写脚本来清理URL


谢谢;)

您可以通过以下方式尝试nginx
try_files
指令:

# Inside some server config
location / {
    try_files $uri /404.php;
}

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

这里我还使用fastcgi连接到php fpm服务器

我不想粗鲁,但我认为你需要先做些家庭作业。其次,在web上公开某种服务器时,安全性是规则1。如果你不保护它,它很容易成为传播坏软件的牺牲品。安全总比抱歉好。哈哈,谢谢你的建议。正如我所说,我的目标不是给出我的脚本或使用它。这纯粹是为了知道这是否可能。这就是为什么我说“我不在乎安全”。因为,我想有一种方法——没有高安全性——可以做到这一点。