如何使用errordocument重定向到同一文件夹中的php文件?
-
13-09-2019 - |
题
我想接受请求 丢失文件 在特定文件夹中并将它们重定向到 程序.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]
第二行验证该文件不存在,从而使现有的图像将被正确地显示。
其他提示
你有没有试过(相对或绝对)路径? 如果你把它相对的,它应该是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那里,包括。可以工作,是吧?
不隶属于 StackOverflow