我们的网站在名为/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可以吗?
谢谢!
答案 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文件。)