环境win2012server+IIS8.5,其中web.config配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="wecenter" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
网站开启了伪静态,测试:域名/question/517、域名/topic/淘宝、域名/people/光辉岁月等都没问题,但是在搜索里输入"新发展"等一部分中文字(仅仅是一部分中文字)就出现:
- http://域名/search/q-5YyX6YOo5rm+
- 服务器错误404 - 找不到文件或目录。您要查找的资源可能已被删除,已更改名称或者暂时不可用。
大部分 中文关键词 都能正常搜索到带#all,是没有问题的。
http://域名/search/q-5YyX6YOo5rm+#all 经测试,关闭伪静态后,这些部分搜索错误的关键词-如:“新发展”又能正常了,说明是启用IIS8.5-web.confgi伪静态后导致搜索部分 关键词 错误。 存在以下疑问:- 1、开启伪静态后,为什么仅是部分关键词 搜索 出现这个问题?
- 2、开启伪静态后,这个不正常的关键词,在搜索时是有内容匹配的,但为什么回车后才出现错误?
该如何解决呢?
已尝试官方社区不下于10种方法,还是未能解决:
伪静态下搜索问题----zhengqiang - WeCenter 产品经理
http://wenda.wecenter.com/question/22092
http://wenda.wecenter.com/question/11842
.........................
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll都是正常的
附带WeCenter话题为中文字伪静态失效不能访问会显示404页面解决方法:
需要修改的文件目录:system\core\uri.php
修改uri.php代码内(推荐使用软件打开PHP文件修改,比如DW软件打开进行修改避免修改后乱码)代码方法如下:
找到代码中(WeCenter3.1.9版本 代码在第63行):
$request_main = $_SERVER['REQUEST_URI'];
修改为
$request_main = mb_convert_encoding($_SERVER['REQUEST_URI'], 'utf-8', 'GBK');
保存后上传替换此修改文件即可解决中文字的话题链接伪静态失效问题。
阅读全文
收起全文