企业新闻

MetInfo米拓建站IIS下伪静态tag聚合标签页翻页中文路径404的解决办法

2020-12-17 12:51:50 zou 48

MetInfo米拓建站IIS下伪静态tag聚合标签页翻页中文路径404的解决办法

关于米拓企业建站系统(简称:MetInfo)(V7.0.0+V7.1.0+V7.2.0)Windows Server 2008R2 IIS7.5+Rewrite2.0环境下开启伪静态后tag聚合标签页面翻页时中文路径404问题的解决办法

MetInfo 7版本Windows Server 2008R2 IIS7.5环境下后台开启伪静态时需要安装IIS URL重写模块2(Rewrite2.0),安装好后启用伪静态时,会覆盖web.config文件,网站原PHP环境配置等会被覆盖掉,要在IIS里重新设置一下PHP的相关配置。同时,在网站前台特色功能栏目下的聚合标签栏目里,当某个中文聚合标签(tag)下内容较多时会分页,点击页码或是下一页,在路径里出现中文(http://www.xxx.com/search/tag/中文聚合标签-2),此时404了,解决办法如下:

在web.config文件中找到rule13的伪静态规则

将原规则中的

match url="^search/tag/([a-zA-Z0-9_^\x00-\xff]+)-([0-9]+)$"

修改为

match url="^search/tag/([a-zA-Z0-9_^\u4e00-\u9fa5]+)-([0-9]+)$"

此时,刷新一下刚才404的那个页面(http://www.xxx.com/search/tag/中文聚合标签-2)显示正常了。


参考材料

iis伪静态不支持中文Url链接的解决办法。

首先要看下你安装的是IIS rewrite_2.0还是ISAPI_Rewrite 3.x的伪静态插件。
 
如果你安装的是IIS rewrite_2.0的话,传递的参数都是UTF-8格式的,如果你网站是GBK的就会出现中文连接乱码。
 
解决办法:
 
rewrite_2.0规则写法:

RewriteRule  ^news_list_([0-9a-zA-Z\u4e00-\u9fa5]+)\.html$          news_list.asp?BigClassName=$1 [L]

比如页面传递参数是 zhongwen:

Session.CodePage = 65001
BigClassName=request("BigClassName")
Session.CodePage = 936
在BigClassName获取的时候,加上两行代码转码下,然后刷新下就行了。
 
如果你用的是ISAPI_Rewrite 3.x的组件的话,换用了ISAPI_Rewrite 3.x后发现编码后的字符会变成乱码,如果直接使用中文不编码,则会被格式化为GBK字符串。
 
解决办法:
 
在RewriteRule 规则的最后添加 NU 参数即可恢复正常。

关于ISAPI_Rewrite中文变乱码的解决方法:
1、在传输URL时,对中文进行urlencode,这样是没错的。
2、如果是ISAPI_Rewrite 3.x 只需添加 NU 参数即可。
 
示例:
RewriteRule ^(.*)$ index.php?$1 [QSA,NU,PT,L]


首页
产品
新闻
联系