求教一个apache问题
环境:windows2003+apache2.0
http://202.102.3.123/aaa/电影/十面埋伏.rm (地址系化名)
这个地址可以从浏览器正确识别并且已经可以下载,但无法使用网际快车等工具下载,提示404,找不到该文件.更不可以使用realone来播放.
改成英文地址,如下:
http://202.102.3.123/aaa/vod/smmf.rm
后,问题依旧
-----
但是,http://202.102.3.123/aaa/mp3/xxxx.mp3
这个地址却一切正常,可用工具下载,也可在线播放(不过.mp3文件用中文地址时也不行,只能用默认的下载)...郁闷中
附上httpd.conf文件,向大侠们求救.感激涕零..:{
附上小弟的apache2.0.50配置文件,大侠们给瞅瞅
perryhg 回复于:2004-08-13 07:41:03
默认的httpd.conf尽量不要动,除非你要改 Listen端口。
建议使用虚拟主机设置。
[code:1:2996c5709a]NameVirtualHost *:8080
<VirtualHost *:8080>
ServerAdmin aaa@aa.com
DocumentRoot "d:/webs"
ServerName localhost
ErrorLog logs/default_vhost_err.txt
CustomLog logs/default_vhost_acc.txt common
Alias /dy/ "g:/"
Alias /lxj/ "e:/"
</VirtualHost>[/code:1:2996c5709a]
AddDefaultCharset 和 DefaultLanguage 都不要设置,看看会否影响你。是在不行,到 "D:/Program Files/Apache Group/Apache2/logs" 下面看看 default_vhost_err.txt 看看里面到底发生什么错误
kimli22 回复于:2004-08-13 13:31:18
照你的方法改了目前的配置文件 - 故障依旧
改回原始配置文件 - 故障依旧
用你的方法改了原始文件 - 故障依旧
55555555555555555555555555
kimli22 回复于:2004-08-13 13:56:36
我的问题和这个基本相同,他们讨论的很详细.问题就在编码那块,但我不知具体该如何做?请大侠们赐教
http://www.phpx.com/happy/showthread.php?s=cd38da156f566ff0e6bfd24824297c2d&threadid=78157&perpage=15&pagenumber=1
kimli22 回复于:2004-08-13 14:12:49
网际快车的信息
英文地址(可以下载):
[code:1:cfa66a76a2]Fri Aug 13 14:08:52 2004 正在连接 202.102.48.62 [IP=202.102.48.62:8080]
Fri Aug 13 14:08:52 2004 已连接.
Fri Aug 13 14:08:52 2004 GET /dy/01.rmvb HTTP/1.1
Fri Aug 13 14:08:52 2004 Host: 202.102.48.62:8080
Fri Aug 13 14:08:52 2004 Accept: */*
Fri Aug 13 14:08:52 2004 Referer: http://202.102.48.62:8080/dy
Fri Aug 13 14:08:52 2004 User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Fri Aug 13 14:08:52 2004 Pragma: no-cache
Fri Aug 13 14:08:52 2004 Cache-Control: no-cache
Fri Aug 13 14:08:52 2004 Connection: close
Fri Aug 13 14:08:52 2004 HTTP/1.1 200 OK
Fri Aug 13 14:08:52 2004 Date: Fri, 13 Aug 2004 06:07:57 GMT
Fri Aug 13 14:08:52 2004 Server: Apache/2.0.50 (Win32)
Fri Aug 13 14:08:52 2004 Last-Modified: Tue, 27 Jul 2004 14:42:26 GMT
Fri Aug 13 14:08:52 2004 ETag: "885-c7f9255-1c3b160c"
Fri Aug 13 14:08:52 2004 Accept-Ranges: bytes
Fri Aug 13 14:08:52 2004 Content-Length: 209687125
Fri Aug 13 14:08:52 2004 Connection: close
Fri Aug 13 14:08:52 2004 Content-Type: application/vnd.rn-realmedia
Fri Aug 13 14:08:52 2004 Content-Language: zh-CN
Fri Aug 13 14:08:52 2004 开始接受数据![/code:1:cfa66a76a2]
中文地址的出错信息:
[code:1:cfa66a76a2]Fri Aug 13 14:13:47 2004 正在连接 202.102.48.62 [IP=202.102.48.62:8080]
Fri Aug 13 14:13:47 2004 已连接.
Fri Aug 13 14:13:47 2004 GET /dy/电影/0517_韩国2424_大智和尚上传/韩国2424.rm HTTP/1.1
Fri Aug 13 14:13:47 2004 Host: 202.102.48.62:8080
Fri Aug 13 14:13:47 2004 Accept: */*
Fri Aug 13 14:13:47 2004 Referer: http://202.102.48.62:8080/dy/电影/0517_韩国2424_大智和尚上传
Fri Aug 13 14:13:47 2004 User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Fri Aug 13 14:13:47 2004 Pragma: no-cache
Fri Aug 13 14:13:47 2004 Cache-Control: no-cache
Fri Aug 13 14:13:47 2004 Connection: close
Fri Aug 13 14:13:47 2004 HTTP/1.1 404 Not Found
Fri Aug 13 14:13:47 2004 Date: Fri, 13 Aug 2004 06:12:51 GMT
Fri Aug 13 14:13:47 2004 Server: Apache/2.0.50 (Win32)
Fri Aug 13 14:13:47 2004 Content-Length: 326
Fri Aug 13 14:13:47 2004 Connection: close
Fri Aug 13 14:13:47 2004 Content-Type: text/html; charset=iso-8859-1
Fri Aug 13 14:13:47 2004 有错误发生![/code:1:cfa66a76a2]
kimli22 回复于:2004-08-13 14:16:54
问题明了了,就是英文地址正常,中文地址只有浏览器可以识别(可以另存为),下载工具和播放器都不能识别,大侠们救救小弟!
perryhg 回复于:2004-08-14 06:44:04
正确的部分
Fri Aug 13 14:08:52 2004 Content-Type: application/vnd.rn-realmedia
Fri Aug 13 14:08:52 2004 Content-Language: zh-CN
出错的部分
Fri Aug 13 14:13:47 2004 Content-Type: text/html; charset=iso-8859-1
Fri Aug 13 14:13:47 2004 有错误发生!
好像是和字符集设置有关
AddDefaultCharset Off
DefaultLanguage 不要设置
wingger 回复于:2004-08-14 07:14:03
乱码问题:
(1)服务器端:
修改httpd.conf (在Redhat中放置的位置为/etc/httpd/conf/)
查找:
AddDefaultCharset ISO-8859-1
改成:
代码:
#AddDefaultCharset ISO-8859-1
AddDefaultCharset off
]
这种方式关掉了服务器的默认语言的发送,这样仅凭html文件头中设置的语言来决定网页语言。
很多文章都说通过修改为 AddDefaultCharset GB2312 把缺省语言改成GB2312来解决中文乱码,确实GB2312内码的网页可以正常显示了,但这并非万全之策。因为当你的网页内码不是GB2312,就算你在网页用下面的meta指定了正确的语言,如ISO8859-1,也不会解码为ISO8859-1,因为Apache已经先你一步将GB2312指定为网页的语言了,
(2)养成良好的习惯,在每个网页的<head></head>的最前面加入这行:
代码:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
一般的中文版网页编辑工具(例如FrontPage、Dreamweaver等)都会自动加上这行。
3、如何解决中文文件名无法访问
代码:
在ie中选择 工具 -> internet选项 -> 高级 -> 取消“总是以UTF-8发送URL”。
kimli22 回复于:2004-08-14 13:39:26
按照上面两位大侠的解答,小弟重新设置了字符集,问题依旧。
现在情况就是:下载工具和播放器只能识别unicode,比如
http://202.102.48.62:8080/dy/%e4%ba%8b%e5%ae%9e.rm
把上面的地址复制到下载工具或REALONE一切正常。
此地址原名:
http://202.102.48.62:8080/dy/事实.rm
kimli22 回复于:2004-08-14 22:33:18
%e4%ba%8b%e5%ae%9e
这一串是什么格式的字符?是不是unicode?
liuzh28 回复于:2004-08-15 13:33:06
apache 1.3.27 所有文件名都用英文,我的可以.
kimli22 回复于:2004-08-15 16:17:40
。。。我要解答啊!大侠们,你们都哪里去了???555555
perryhg 回复于:2004-08-15 18:35:16
[code:1:ff40fb7d5c]按照上面两位大侠的解答,小弟重新设置了字符集,问题依旧。
现在情况就是:下载工具和播放器只能识别unicode,比如
http://202.102.48.62:8080/dy/%e4%ba%8b%e5%ae%9e.rm
把上面的地址复制到下载工具或REALONE一切正常。
此地址原名:
http://202.102.48.62:8080/dy/事实.rm[/code:1:ff40fb7d5c]
既然下载工具和realone都正常了,你还有什么问题?
在浏览器的“工具”->选项->高级 里面,选择“总是以UTF-8发送URL”问题即可解决,flashget应该会自动转换的。
kimli22 回复于:2004-08-15 20:57:56
不好意思,楼上兄台误解了。
这种地址:http://202.102.48.62:8080/dy/%e4%ba%8b%e5%ae%9e.rm可以正常访问。
但实际上我们的地址是这种:http://202.102.48.62:8080/dy/事实.rm
如果想用下载工具和播放器访问"事实.rm"这个文件,就必须要先把它转化成“%e4%ba%8b%e5%ae%9e.rm”现在的问题就是如何转换这两种字符串了。
kimli22 回复于:2004-08-15 21:10:07
唉,讨论这么多天,竟然发现自己的问题是现在网上普遍存在的。URL中提交中文参数就会出错。。需要找一段编码转换公式。
bdw 回复于:2004-08-16 00:30:09
<?php
$str="url";
$str=urlencode($str);
echo $str;
?>
kimli22 回复于:2004-08-17 23:08:26
多谢楼上!
不知道可不可以在APACHE中设置支持?
kimli22 回复于:2004-08-18 20:57:08
楼上二层兄台给的方法偶早试过了,得出的代码不一样...
原文: 事实.rm
得出的是:%CA%C2%CA%B5.rm
应该是: %e4%ba%8b%e5%ae%9e.rm
kimli22 回复于:2004-08-19 14:25:51
多谢各位帮忙,小弟已解决此问题,代码如下。有相同问题解决不了的朋友可以问问我,也许我能给点建议
<?
$inString=$_GET["aaaa"];
$inString=urlencode(iconv( 'gb2312', 'utf-8', $inString ));
$inString=str_replace("%3A",":",$inString);
$inString=str_replace("%2F","/",$inString);
echo $inString;
?>
Redian 回复于:2004-09-23 11:35:52
[quote:7f47b28432="kimli22"]
$inString=urlencode(iconv( 'gb2312', 'utf-8', $inString ));
$inString=str_replace("%3A",":",$inString);
$inString=str_replace("%2F","/",$inString);
echo $inString;
?>[/quote:7f47b28432]
这段是什么意思啊,我也遇到同样的问题了,请介绍具体的设置。