Windows IIS 7.5伪静态中文URL地址404错误问题

空间迁移后,WordPress文章中所有的中文tag页面访问全都报404错误,Google搜索了一下,得知IIS7.5伪静态URL_Rewrite不支持中文,最终在IIS7 WordPress 中文 URL 解决方案博文中找到解决方法,特别感谢原文作者,在此将解决方案再分享一下,希望可以帮到后来的朋友~

在WordPress安装目录下,新建一个“chineseurl.php”文件,内容如下:

 代码如下 复制代码

<?php

// IIS Mod-Rewrite
if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
}
// IIS Isapi_Rewrite
else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
}
else
{
// Use ORIG_PATH_INFO if there is no PATH_INFO
if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
$_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];

// Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
if ( isset($_SERVER['PATH_INFO']) ) {
if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
else
$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
}

// Append the query string if it exists and isn't null
if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
}
}

require("index.php");

?>

然后在web.config中新增一条规则,并将此规则置于规则集合的顶部:

 代码如下 复制代码

<rule name="ChineseURL" stopProcessing="true">
 <match url="/(tag|category)/(.*)" />
 <action type="Rewrite" url="chineseurl.php" />
</rule>

效果如下

如果 WordPress 不是装在根目录,则需要更改“<match url=”^(tag|category)/(.*)$” />”为“<match url=”^安装目录/(tag|category)/(.*)$” />”。如果在固定链接设置里把默认的标签前缀和分类目录前缀(tag 和 category)改了,则更改这句里的对应内容即可。

时间: 2016-12-10

Windows IIS 7.5伪静态中文URL地址404错误问题的相关文章

访问编码后的中文URL返回404错误的解决方法_php技巧

昨天做一个项目,其中有一个需求是每一张图片对应一小段文字对图片的说明,普通的做法是新建一个表然后把图片名与说明文字都记录到数据库内.仔细考虑后感觉这个应用不要数据库也能完成,我实现的方案是把说明文字URLENCODE后当做文件名,这样当我读取文件的时候再把文件名URLDECODE就可以后驱图片的文字说明了. 可是通过浏览器访问图片时却提示找不到文件,如有一张图片的说明文字为"琼台博客",URLENCODE后生成的文件名如下 复制代码 代码如下: %E7%90%BC%E5%8F%B0%E

vs2013 iis express运行项目的时候,伪静态页面抛出404错误?

问题描述 vs2013iisexpress运行项目的时候,伪静态页面抛出404错误,但是vs2010以下的版本可以!如图:请问各位大侠,怎么实现vs2013iisexpress伪静态,谢谢! 解决方案 解决方案二:你这个是还没有到程序里面吧,像是iis找不到你的web资源.解决方案三:不是,不知道咱回事,VS2010以下的版本没有问题,到vs2013后可能是因为使用了iisexpress代理服务器出了问题!解决方案四:各位大侠,如果能给个正确的提示,直接200分给,说话算数.是不是不能用伪静态,

WordPress中文Tags、中文地址404错误解决办法

下面我们以WordPress3.8.1为例子 WordPress更新到3.8.1版本后,一如既往地出现了中文地址和中文Tags标签打不开的问题 首先打开Wordpress站点下wp-includes目录里的class-wp.php文件.操作之前复制备份一个是好的习惯.我是用EditPlus编辑的.另外以下操作都是在源文件没有被修改下进行的,从后朝前修改也是为了确保行数是原始文件的行数,另外咱们要记下,这个文件是ANSI编码. 搜索$_SERVER['REQUEST_URI']或直接定位157行.

ASP.NET网站伪静态下使用中文URL的方法_实用技巧

首先解释一下,什么是中文URL呢?它并不是我们常见的把汉字编码为 %CF%EC 这种形式,而是在URL中直接使用汉字 这种形式目前还不是很多见.因为不同的浏览器处理起来可能会有所不同,不过据我测试,IE8和Firefox是完全支持的. 它的好处是可以使用链接地址看起来非常直观易懂!搜索引擎也支持. 先讲一下我的ASP.NET网站的伪静态,我的文件都是以.htm结尾的,实际上是动态的ASP.方法是:在后台将htm映射为aspx文件. 伪静态的规则,是在web.config文件中定义的. 形式一:

Windows IIS日志文件分析程序

Windows Server具有事件日志记录的功能,其IIS日志文件里记录了包括下列信息:谁访问了您的站点,访问者查看了哪些内容等等.通过定期检查这些日志文件,网站管理员可以检测到服务器或站点的哪些方面易受攻击或存在其他安全隐患. 不过,目前的日志分析工具并不是很完善,有些功能并不具备,特别是针对某个URL地址进行攻击的分析并不多,下面是一个VB Script程序,保存为VBS程序后可以在服务器上运行,用于分析和检测IIS日志里针对某个URL地址进行攻击的IP地址. "代码开始targeturl

如何设置DZ!NT论坛的伪静态Url地址

为了增强Url友好性,方便搜索引擎的收录,现在很多用户都希望将较长的Url带参数程序地址变成较短的程序或静态网页Url地址. 例如: 将 show.aspx?id=3&page=4 变为 show-3-4.aspx 或 show-3-4.html 显然,后面的Url更短更友好. (一) Discuz!NT默认支持的aspx伪Url地址介绍. Discuz!NT支持一个对用户很有用的优点:默认已经支持伪Url地址,例如: 对于 showforum.aspx?forumid=3&page=4

IIS自定义404错误,输入URL地址的小技巧

iis|错误|技巧 我设置IIS中自定义404错误,无法输入URL地址,总是提示输入"错误的URL地址,请输入一个站点的绝对url地址". 我输入的是:http://www.xxxx.com/404.htm,但是每次都是错误. 反复测试了很多次,并且查询了网上的资料,发现:IIS设置404错误的时候,输入URL地址,要输入一个本站站点的绝对url地址,并不是网络上的一个域名地址. 具体设置如下:打开IIS管理器-->点击要设置自定义404网点的属性-->点击自定义错误选项-

IIS下下伪静态html(URL Rewrite)设置方法

iis|静态 首先,下载文件 dv_iis_url_rewrite.zip,将其解压到本地硬盘(压缩包里有两个文件,分别是IisUrlRewriter.dll和IisUrlRewriter.ini),然后打开IIS管理器: 选择"ISAPI筛选器",然后选择"添加": 在"添加/编辑筛选器属性"对话框中,点击"浏览": 在这里,选择刚才解压出来的IisUrlRewriter.dll 点击"确定"结束设置:

详谈关于Discuz!NT 的URL地址重写(URLRewrite)

在Discuz!NT中的前台页面访问(特别是aspx)是被HttpModule接管的,所以大家在Discuz.Web项目的目录下看到的唯一"aspx文件"是index.aspx,而所有其它前台页面都有"/aspx/"文件夹下的相应的子目录中,而这些子目录名称是与后台所"生成"的模板存在对应关系的.而这种"关系"的绑定是通过dnt_templates(模板数据表)来进行关联的.而有关模板机制的文章详见:     "Di