推56论坛

 找回密码
 立即注册(限中文)

QQ登录

只需一步,快速开始

    查看: 1132|回复: 0

    [discuz教程] 【第9篇】ISAPI_Rewrite 3.x Url 编码问题——Discuz! URL 静态化“您指定的用户空...

    [复制链接]
    发表于 2013-1-2 12:34:33 | 显示全部楼层 |阅读模式
    转自:http://bbs.netbarghost.com/thread-129-1-1.html(网吧幽灵)

    Discuz! X2 中,Rewrite 规则URL 静态化 如下
    • RewriteRule ^(.*)/topic-(.+)\.html(\?(.*))*$ $1/portal\.php\?mod=topic&topic=$2&$4
    • RewriteRule ^(.*)/article-([0-9]+)\.html(\?(.*))*$ $1/portal\.php\?mod=view&aid=$2&page={page}&$5
    • RewriteRule ^(.*)/forum-(\w+)-([0-9]+)\.html(\?(.*))*$ $1/forum\.php\?mod=forumdisplay&fid=$2&page=$3&$5
    • RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html(\?(.*))*$ $1/forum\.php\?mod=viewthread&tid=$2&extra=page\%3D$4&page=$3&$6
    • RewriteRule ^(.*)/group-([0-9]+)-([0-9]+)\.html(\?(.*))*$ $1/forum\.php\?mod=group&fid=$2&page=$3&$5
    • RewriteRule ^(.*)/space-(username|uid)-(.+)\.html(\?(.*))*$ $1/home\.php\?mod=space&$2=$3&$5
    • RewriteRule ^(.*)/blog-([0-9]+)-([0-9]+)\.html(\?(.*))*$ $1/home\.php\?mod=space&uid=$2&do=blog&id=$3&$5
    • RewriteRule ^(.*)/(fid|tid)-([0-9]+)\.html(\?(.*))*$ $1/index\.php\?action=$2&value=$3&$5

    复制代码
    服务器上安装的是
    ISAPI_Rewrite 3.x

    配置完成之后,发现,点击论坛页面中的中文用户名(本应进入用户的空间),却提示:
    • 您指定的用户空间不存在

    复制代码
    后台中 Rewrite 兼容性 设置为“是”或“否”,问题依然存在。

    尝试用动态访问
    http://www.netbarghost.com/home.php?mod=space&username=%D3%EA%CE%C4
    很正常,用静态化之后的地址
    http://www.netbarghost.com/space-username-%D3%EA%CE%C4.html
    就提示:“您指定的用户空间不存在”

    为了防止浏览器不识别中文url,Discuz!是用UrlEncode编码了用户名。
    想想,“%D3%EA%CE%C4”是按gb2312编码的,换成utf-8试试
    http://www.netbarghost.com/space-username-%e9%9b%a8%e6%96%87.html

    果然,就能访问了。

    查阅 ISAPI_Rewrite 3.x 的帮助文档得知:
    • nounicode|NU
    • If NU flag is set, transformation from Unicode to UTF-8 will not take place and all Unicode characters remain encoded in %xx format.
    • 如果设置NU标志,不会把Unicode编码转换为UTF-8,所有Unicode字符编码保持%xx格式。

    复制代码
    原来 ISAPI_Rewrite 3.x 默认输入格式是utf-8。

    我们在 用户个人主页 的静态规则后加上[NU],就能解决问题了
    • RewriteRule ^(.*)/space-(username|uid)-(.+)\.html(\?(.*))*$ $1/home\.php\?mod=space&$2=$3&$5 [NU]

    复制代码
    现在启用 用户个人主页 的静态规则,discuz教程-OK,搞定。
    学建站、学推广、学赚钱,上56站长论坛就够了!个性签名请到个人资料里面修改……

    本版积分规则

    关闭

    推56站长论坛推荐上一条 /3 下一条

    站长QQ
    在线咨询
    咨询热线
    QQ:405327411
    站长

    QQ|广告合作|关于我们|联系我们|免责声明|网站导航|站长论坛 ( 豫ICP备11018337号-5

    王宝臣旗下网站 推56论坛(www.tui56.com|ask.tui56.com|blog.tui56.com|daohang.tui56.com)

    Powered by Discuz! X3.4 Licensed

    ©2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表