Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 404在apache中重写404页时的处理_Php_Javascript_Apache_Http Status Code 404 - Fatal编程技术网

Php 404在apache中重写404页时的处理

Php 404在apache中重写404页时的处理,php,javascript,apache,http-status-code-404,Php,Javascript,Apache,Http Status Code 404,我正在一个网站上工作,我已将apache配置为通过以下方式将404页面指向index.php: "ErrorDocument 404 /index.php" 所以我可以手动解析url参数。我目前正在写一个图像包装,所以如果你去例如 "myssite.com/image/test" 它将显示一个php头设置为image/jpeg的测试图像,以便将图像在服务器上的物理位置屏蔽为稍后由数据库管理的图像。当我通过php显示此图像时,如下所示: “回显”;“ 它显示正确。如果使用javascrip

我正在一个网站上工作,我已将apache配置为通过以下方式将404页面指向
index.php

"ErrorDocument 404 /index.php" 
所以我可以手动解析url参数。我目前正在写一个图像包装,所以如果你去例如

"myssite.com/image/test"
它将显示一个php头设置为image/jpeg的测试图像,以便将图像在服务器上的物理位置屏蔽为稍后由数据库管理的图像。当我通过php显示此图像时,如下所示:

“回显”;“
它显示正确。如果使用javascript执行同样的操作并将其插入页面,则会收到404错误,并且不会加载图像


我想我要么需要让apache根本不报告404,要么以某种方式改变javascript处理它的方式。有什么建议吗?

请将您的页面与其他php脚本连接,以了解标题响应

确保它给出200 ok

如果给出404,则可能是标题问题


因此,您必须使用htaccess重定向到您的图像

通过将以下内容添加到httpd.conf中,404错误得到修复:

<Directory "/var/www">
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]

</Directory>

重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$/index.php[L]
虽然这对图像不显示没有帮助,但这导致我仔细查看显示图像的函数。当我在显示图像之前使用裁剪脚本时,很可能会导致标题出现问题。这需要对我的后端做一些小的更改


谢谢大家的帮助

您还可以使用常见的重写规则重定向不存在的请求路径。或者在处理程序脚本中使用适当的header()调用来覆盖404。有没有一种方法可以使用RewriteRule忽略所有可能的url参数而不抛出404?标题会根据您在站点上访问的内容进行更改。例如,来自/image/的任何内容都会有一个图像标题,而不是来自/content/的内容。
$ch = curl_init('http://myssite.com/image/test'); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
echo $data;
<Directory "/var/www">
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]

</Directory>