首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >X-Sendfile为处理程序文件显示404

X-Sendfile为处理程序文件显示404
EN

Stack Overflow用户
提问于 2017-07-14 00:48:07
回答 1查看 549关注 0票数 0

我试图通过一些创造性的.htaccess重写通过attempting提供文件服务。把它煮到最基本的部分,我基本上会捕捉到任何传入的请求并将其路由到处理程序文件中,如下所示.

.htaccess

代码语言:javascript
复制
# If the requested file exists...
RewriteCond %{REQUEST_FILENAME} -f
# Send the request to handler.php instead
RewriteRule . /handler.php [L]

这是handler.php

代码语言:javascript
复制
<?php
header( 'Content-Type: text/html' );
header( "X-My-Debug: {$_SERVER['REQUEST_URI']}" );
header( "X-Sendfile: {$_SERVER['REQUEST_URI']}" );
die();

现在,理想情况下,如果我请求一个现存的文件,比如localhost/helloworld.htm,我应该在浏览器中看到helloworld.htm的内容。相反,我看到:

未找到:在此服务器上找不到请求的URL /handler.php。

奇怪的是,请求被路由到处理程序,但这不是被发送到的文件名。此外,响应中缺少我的自定义调试头。当然,我做的第一件事就是用.

代码语言:javascript
复制
<?php
header( 'Content-Type: text/html' );
header( "X-My-Debug: {$_SERVER['REQUEST_URI']}" );
header( "X-Sendfile: helloworld.htm" );
die();

如果我这样做,那么localhost/helloworld.html仍然会给出上面的错误.然而,当我现在直接访问localhost/handler.php时,它最终为我提供了硬编码的helloworld.htm内容,并且我的调试头现在出现在响应中。无论我是用相对路径还是绝对路径替换硬编码文件,结果都是一样的。

我在这里错过了什么?为什么X-Sendfile在重写请求时给我提供了处理程序文件上的404错误,而不是当我直接访问处理程序时?为什么我的自定义调试头会丢失呢?

为了记录在案,我在MamP4.1.1中运行这个程序。

EN

回答 1

Stack Overflow用户

发布于 2017-08-25 21:18:41

当路径正确时,X将提供404 NOT页面,但该文件没有足够的读/写/执行权限。尝试将您的文件chmod为0644,然后再试一次,看看它是否解决了问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45092956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档