老榕树社区
标题:
DZ论坛访问中文用户出现“抱歉,您指定的用户空间不存在”解决方法
[打印本页]
作者:
兵临城下
时间:
2017-3-13 11:04
打开:source/function/function_core.php
找到:$_G['setting']['rewritecompatible'] && $username = rawurlencode($username)
更为:$_G['setting']['rewritecompatible'] && $username = $usernam复制代码
开了伪静态后打开中文用户名空间我以前也遇见过,不过上面这个纯属二货瞎糊弄人,根本就不行的!
我最后完美的解决方法是:在web.config中添加<security>
<requestFiltering allowDoubleEscaping="true" />
</security>复制代码
然后论坛后台设置-seo-勾上中文兼容
OK!
作者:
星河宇飞来
时间:
2017-3-13 11:04
加在<system.webServer> </system.webServer>这句中间,不用去修改任何论坛文件
作者:
如何可以重来
时间:
2017-3-13 11:04
有方法就是好了。
作者:
永被嫌弃的天使
时间:
2017-3-13 11:04
jiangchuankyo 发表于 2016-12-7 18:57
开了伪静态后打开中文用户名空间我以前也遇见过,不过上面这个纯属二货瞎糊弄人,根本就不行的!
我最后完 ...
谢谢你,非常感谢,我试试
作者:
一人一花一凋零
时间:
2017-3-13 11:04
主题贴的方法解决不了,我试试“jiangchuankyo”的
作者:
多拉A梦的小毛
时间:
2017-3-13 11:04
jiangchuankyo 发表于 2016-12-7 18:59
加在 这句中间,不用去修改任何论坛文件
我找不到这个文件,我的VPS主机,2003的系统,这个文件怎么找到,网上好多方法都找不到
作者:
越来越八卦的我
时间:
2017-3-13 11:04
wuyin731 发表于 2016-12-23 11:40
我找不到这个文件,我的VPS主机,2003的系统,这个文件怎么找到,网上好多方法都找不到
那个文件是IIS7.0以上版本的网站配置文件,自动生成在你网站根目录的,IIS6.0没试过
作者:
飞虎奇闻明明
时间:
2017-3-13 11:04
IIS6.0 着了半天也没看到在哪里有
作者:
大器晚成成不成
时间:
2017-3-13 11:04
本帖最后由 格东站长网插件 于 2016-12-28 18:52 编辑
jiangchuankyo 发表于 2016-12-7 18:57
开了伪静态后打开中文用户名空间我以前也遇见过,不过上面这个纯属二货瞎糊弄人,根本就不行的!
我最后完 ...
你这句肯定不行啦
$_G['setting']['rewritecompatible'] && $username = rawurlencode($username)这句,意思是让rawurlencode函数作废,那其实就只剩下
$_G['setting']['rewritecompatible'],也就是完全不对会员名做检验了!而且上面引用的代码还写漏了字,肯定报错。
之后那个进行编码判断并统一转为UTF8的思路是对的,应该说默认代码就有漏洞,应该先做编码判断的。
作者:
豪鬼大帝
时间:
2017-3-13 11:04
标题:
DZ论坛访问中文用户出现“抱歉,您指定的用户空间不存在”解决方法
今天遇到了这个问题,顺便解决了!纯属搬运,希望能帮到同样出现此问题的朋友!
rewrite兼容性设置,是用来解决开启伪静态的时候,一些空间不支持中伪静态问题当用户开启了伪静态,经常碰到含有中文用户名(使用username访问空间)的链接 出现“ 用户空间不存在”
出现这样的问题的原因:
如, 心梦 正常解析 为: %D0%C4%C3%CE 。 但是地址栏中看到的是:%25D0%25C4%25C3%25CE
%对再一次替换
这时选择rewrite兼容性,切换 。设置为“ 是” 或者“否” 查看是否解决
如果,还是出现,用户空间不存在
打开:source/function/function_core.php
找到:$_G['setting']['rewritecompatible'] && $username = rawurlencode($username)
更为:$_G['setting']['rewritecompatible'] && $username = $usernam
rawurlencode函数的作用:除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,这也就是%被二次处理的原因。将rawurlencode函数去掉即可!
DZX 对中文用户名的链接经常会出现“抱歉,您指定的用户空间不存在”,配置伪静态之后兼容性选择是.打开中文用户名个人空间是空白.选择否.打开个人空间就提示:抱歉,您指定的用户空间不存在..
用去掉function_core.php里面的rawurlencode函数的办法.打开任何页面.直接显示服务器500错误.我艹!!看来只能自己DIY了..
由于2个DZ.一个UTF8未出现这个问题.GBK的出现这个问题.怀疑是编码的问题..怕替换到其他地方出错.只替换了home_space.php解决问题...
解决方法如下:
打开\source\module\home\home_space.php文件,找到如下代码:
本帖隐藏的内容
if($_GET['username']) {
$member = C::t('common_member')->fetch_by_username($_GET['username']);
if(empty($member) && !($member = C::t('common_member_archive')->fetch_by_username($_GET['username']))) {
showmessage('space_does_not_exist');
}
替换成下面这段代码即可!!
if($_GET['username']) {
$gbk_username=iconv('UTF-8','GBK',urldecode($_GET['username']));
$member = C::t('common_member')->fetch_by_username($gbk_username);
if(empty($member) && !($member = C::t('common_member_archive')->fetch_by_username($gbk_username))) {
showmessage('space_does_not_exist');
}
然后在后台Rewrite 兼容性.选择否...问题解决..........
欢迎光临 老榕树社区 (http://club.lrswl.com/)
Powered by Discuz! X3