我想接受请求 丢失文件 在特定文件夹中并将它们重定向到 程序.php 在那个文件夹中。

这是一个我会在不同地方经常使用的程序,我宁愿避免在 htaccess 文件中指定文件夹的名称。

我试过只是放:

errordocument 404 program.php

但结果是浏览器只是 打印出“program.php” 并且不执行program.php。

我明白 为什么 这正在发生:根据位于的文档 http://httpd.apache.org/docs/2.0/mod/core.html, 、不以斜杠或 http 开头的 url 将被解释为文本消息。

问题是如何绕过此限制以便能够访问同一文件夹。

有帮助吗?

解决方案

我结束了使用的重写规则代替的ErrorDocument

rewriteengine on
rewritecond %{request_filename} !-f
rewriterule ^(.+).jpg$ program.php?i=$1.jpg [L]

第二行验证该文件不存在,从而使现有的图像将被正确地显示。

其他提示

您想要的:

ErrorDocument 404 /program.php

按照文档,“URL可以开始与本地web路径(相对于DocumentRoot的)一斜杠(/)“。

你有没有试过(相对或绝对)路径? 如果你把它相对的,它应该是Web根目录,这可能服务器你的目的。

ErrorDocument 404 /program.php

如果你只有几个文件夹中,你也许可以使用:

<Directory /path/a>
   ErrorDocument 404 /a/program.php
</Directory>
<Directory /path/b>
   ErrorDocument 404 /b/program.php
</Directory> 
<Directory /path/c>
   ErrorDocument 404 /c/program.php
</Directory>

如果这是不切实际的,那么您应该只有在根一个program.php并将它取决于REDIRECT_URL环境变量,它是$ _SERVER在PHP [“REDIRECT_URL”]的内容有不同的反应。

为什么不能有一个ErrorDocument的处理中的所有文件夹中的所有错误?可能是更清洁的方式。然后,您可以使用$ _ SERVER [“REQUEST_URI”]如果我没有记错应包含原始请求处理的个案。

这个怎么样。在你的根路径,你建立一个通用的error.php文件。然而,它的作用是解析REQUEST_URI,检查路径,看看是否有一个自定义的error.php那里,包括。可以工作,是吧?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top