如何在IIS下永久实现wordpress的固定链接

 我来答
可以叫我表哥
2014-12-23 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464977
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
  因为要迁移wordpress到IIS服务器上面,所以就在网上找了一些方法,开始以为和Linux上面一样的,配置PHP就OK了,但是发现不能访问wprdpress的永久固定链接,因为链接的形式是以.html结尾的,所以IIS不能识别,怎么办了?最后找到一个IIS插件,WordPress URL Rewrite,这个插件还不错,可以实现大部分的URL永久访问,但是问题来了,貌似不能访问文章页面,怎么了?原来还有404的方法,这个就可以解决中文URL和.html类的永久固定链接的访问了。
  一、Windows2003 IIS6下配置WordPress伪静态方法:
  1.下载WordPress URL Rewrite组件
  下载地址:http://www.binaryfortress.com/wordpress-url-rewrite
  WordPress URL Rewrite主要功能与特色:完全无需人工干预,全自动重写URL,只需要在后台设置好固定链接(Permalinks)形式,就能直接使用,就像linux下用htaccess一样。可以使用在一级目录和子目录,也可以排除不需要重写的目录。这个非常方便,对于某些目录不需要URL重写的就将其排除,不会造成无法访问。因为全自动,所以免去了在写重写规则时候遇到的规则重复造成部分目录和文件无法实现的情况。
  2.安装WordPress URL Rewrite
  把下载的压缩包解压到任何地方,只要保证WordPressURLRewrite.ini和WordPressURLRewrite32.dll(32位版本,64位版本对应为64.dll)在同一文件夹下就可以了。
  然后打开WordPressURLRewrite.ini设置你的博客目录,以及需要排除的目录,Readme.txt里有详细说明,这里就不细说了。
  接下来,在IIS中选择相应的站点,在ISAPI筛选器中加载WordPressURLRewrite32.dll就可以了,加载完重启IIS或者停止网站再启动即可。
  注意:要给dll所在的目录加上IIS_WPG组的写入权限,否则无法加载对应dll文件。
  二、利用404页面实现伪静态
  首先需要编写404.php页面,上传404.php文件放到wordpress根目录下,代码如下:
  <?php
  if (strpos($_SERVER["SERVER_SOFTWARE"], "Apache") === 0){
  // Apache
  // REQUEST_URI形如"/non-exist-page.html"
  $uri = $_SERVER['REQUEST_URI'];
  }
  else{
  // IIS
  // $_SERVER['QUERY_STRING']形如"404;http://localhost/non-exist-page.html"
  $qstr = $_SERVER['QUERY_STRING'];
  $_SERVER['QUERY_STRING'] = "";
  $pos = strrpos($qstr, '://');
  $pos = strpos($qstr, '/', $pos + 4);
  $uri = substr($qstr, $pos);
  }
  $_SERVER['REQUEST_URI'] = $uri;
  $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
  // 解决重定向的页面中的页面导航问题
  $_SERVER['SCRIPT_NAME'] = $_SERVER['PATH_INFO'];
  include('index.php');
  ?>
  然 后需要设置IIS的404页面到wordpress根目录下的404.php。IIS下的设置步骤为:Internet信息服务窗口->右键网站或 wordpress目录->属性->自定义错误->选中404->编辑属性…->消息类型选择url->输入 /404.php(绝对路径)。

  三、解决中文404找不到页面的问题
  1.打开wp-includes/classes.php文件,找到如下代码:
  if ( isset($_SERVER['PATH_INFO']) )
  $pathinfo = $_SERVER['PATH_INFO'];
  else
  $pathinfo = '';
  $pathinfo_array = explode('?', $pathinfo);
  $pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
  $req_uri = $_SERVER['REQUEST_URI']
  将其修改替换为:
  if ( isset($_SERVER['PATH_INFO']) )
  $pathinfo = iconv('GBK', 'UTF-8', $_SERVER['PATH_INFO']);
  else
  $pathinfo = '';
  $pathinfo_array = explode('?', $pathinfo);
  $pathinfo = str_replace("%", "%25", $pathinfo_array[0]);
  $req_uri = iconv('GBK', 'UTF-8', $_SERVER['REQUEST_URI']);
  好了,就这样,我们的网站就可以访问了,至于SEO和404页面方法的问题,这个就留给博友们去研究吧。目前TC没有多少时间去研究了,如果有时间会继续写一篇关于404页面的影响的。目前还没有发现什么问题,至于收录就期待吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式