nginx - 减少服务器上文件数量的方法 - 404可以工作但返回状态404

时间:2011-08-01 18:05:18

标签: php nginx rewrite http-status-code-404

我们的网站在名为/var/www/album/*.php的目录中包含数百个相册文件。这些专辑文件中的每一个都被命名为专辑的编号:245.php,943.php,103.php等。这些专辑文件只包含一个简单的PHP指令,其中包含了album.php脚本。在/var/www/album/album.php(展示专辑背后的肉)。

我想以某种方式消除甚至在目录中包含这些相册文件的需要,所以我的想法是配置nginx以在未找到请求的页面时提供自定义404页面。在404页面(custom_404.php)中,我有一些PHP代码剥离_SERVER ['document_uri'],检查数据库以查看它是否是专辑,如果是,则custom_404.php包括album.php。如果请求的文件是真正的404,则custom_404.php显示Page Not Found ...

除了状态代码之外,这种方式正常:404仍然被退回,但我不能帮助他们认为他们必须更好地处理这种情况?我想远离专辑.php?album = 245路线!用nginx和php可以吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

首先告诉nginx在找不到请求的文件时提供index.php:

try_files $uri /index.php;

然后,在index.php中,从URI中提取所需信息:

$uri = $_SERVER['REQUEST_URI'];
// logic to extract the album etc

所以(例如)你在浏览器中点击http://yoursite.com/album/123并在你的index.php中得到:

$uri = '/album/123';

(然后你可以删除所有的N.php文件。)