豪仕知识网--知识就是力量!

微信
手机版
生活常识

IIS环境下宝塔伪静态规则导致后台分类无法访问出现404问题怎么解决?

作者 : 2023-06-10 14:07:27 围观 : 评论

IIS环境下宝塔伪静态规则导致后台分类无法访问出现404问题怎么解决?

IIS 的 web.config 伪静态问题,宝塔面板给的 wordpress 伪静态规则启用后无法访问管理后台某些页面比如分类目录、标签等页面(返回 404)的解决方案

请注意,本文编写于 1043 天前,最后修改于 488 天前,其中某些信息可能已经过时。

最近一段时间一直被这个宝塔面板默认给的 wordpress 的伪静态规则所困扰。

◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲豪仕知识网HtTp://▲▼▲▼▲

不设置伪静态规则,则前台大家的文章内页会无法访问,返回 404,所以这肯定是要设置的。但是伪静态规则设置了之后,前台是能正常访问了,但是后台我的 wordpress 的文章的 “分类目录”、“标签” 这两个的页面均无法正常访问,返回 404。

豪仕知识网http://www.haoz.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

对应页面链接为:

豪仕知识网http://www.haoz.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

https://16886.net/wp-admin/edit-tags.php?taxonomy=category

http://www.haoz.net●☛█▼▲◐●☛█▼▲◐◐◐◐●☛█▼▲◐豪仕知识网●☛█▼▲豪仕知识网

https://16886.net/wp-admin/edit-tags.php?taxonomy=post_tag

可以看到,他们都有一个共同的特点,用的都是 edit-tags.php,带的访问参数名都是 taxonomy,值不一样。

这导致了什么问题呢?

  1. 无法设置新的分类目录,也无法管理现有的分类目录。这个还好,不是经常操作的。
  2. 无法在写文章的时候给文章添加文章标签,每次一添加标签写文章的页面就会刷新,压根无法加标签。这个就是最烦人的。
◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲HTTP://WWW.hAoz.net███████████████████████████东方金报网

这导致了我在近期的一段时间内,很憋屈的,当需要给文章加标签的时候,需要到后台先删除网站的伪静态配置(这会短暂的让大家无法看文章内页),然后我用迅雷不及掩耳之势编写好文章的标签。然后再赶紧加上伪静态配置,这才完成,每次都超级麻烦。我知道问题肯定是出来了伪静态的配置上(之前我定位问题也定位了好几天)。

因此我近段时间都在想有什么办法来解决这个问题呢?

其实也不是没想过。

◐◐◐◐●☛█▼▲豪仕知识网███████豪仕知识网HTtp://www.haoZ.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

网站用的是 IIS,不比以前用 apache 或者有的人用的 ngnix。然后宝塔面板的伪静态配置用的不是过去的什么 httpd.ini 文件,所以很多过去的网站发表的文章的方法都失效了。

HTTP://WWW.haoz.net豪仕知识网采集不好玩哦◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐撒旦法师打发斯蒂芬

网站用的是 web.config 文件(一种 IIS 的配置文件)来进行网站配置。

web.config 文件里面会写入伪静态规则的配置:


 
  <?xml version="1.0" ?>
  <configuration>
  <location allowOverride="false" inheritInChildApplications="false" path=".">
  <system.webServer>
  <rewrite>
  <rules configSource="web_configrewrite.config"></rules>
  </rewrite>
  <defaultDocument configSource="web_configdefault.config"></defaultDocument>
  <httpErrors configSource="web_confighttpErrors.config"></httpErrors>
  <handlers configSource="web_configphp.config"></handlers>
  </system.webServer>
  </location>
  </configuration>
   

可以发现,这里的这一行:<rules configSource="web_configrewrite.config"></rules> 表示的就是在下一级目录中有一个叫做 rewrite.config 的文件是用来写伪静态的规则的。

●☛█▼▲豪仕知识网◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲

目前宝塔面板给的 wordpress 默认的伪静态规则是这样的:


 
  <?xml version="1.0" ?>
  <rules>
  <rule name="category_rewrite">
  <match url="category/?(.*)"/>
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false"/>
  <action appendQueryString="false" logRewrittenUrl="false" type="Rewrite" url="/index.php?category_name={R:1}"/>
  </rule>
  <rule name="tags_rewrite">
  <match url="tag/?(.*)"/>
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false"/>
  <action type="Rewrite" url="index.php?tag={R:1}"/>
  </rule>
  <rule name="Main Rule_rewrite" stopProcessing="true">
  <match url=".*"/>
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
  </conditions>
  <action type="Rewrite" url="index.php/{R:0}"/>
  </rule>
  <rule name="wordpress_rewrite" patternSyntax="Wildcard">
  <match url="*"/>
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
  </conditions>
  <action type="Rewrite" url="index.php"/>
  </rule>
  </rules>
   

其中大家可以看到有四段规则。当然这些我百度了老半天了,一直没能解决问题,也看了一些英文网站,依然无法解决。当然在宝塔的论坛也有发过帖子,看着别人的问题都是有解答的我想这个用你们产品的问题应该有解答吧,应该很快吧。但让我失望的是,几个月过去了,宝塔的运维理都不理,还好近期看到自己的帖子被另外一位网友评论了,说自己也遇到了类似的问题,但不知道怎么解决。

◐◐◐◐●☛█▼▲豪仕知识网███████豪仕知识网HTtp://www.haoZ.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

可以说,这个办法是全网首发。

我只好自己找资料,自己尝试写规则测试。还好,我看得懂一些英文。雅思英语还是过关的。

HTTP://WWW.haoz.net◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐豪仕知识网

最后我想了一个办法,将这里的四段规则删除一些,留下一些,把可疑的单独删除,看能否正常访问。幸运的是,最后让我测试出来了,问题出现在这一段上:


 
  <rule name="tags_rewrite">
  <match url="tag/?(.*)"/>
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false"/>
  <action type="Rewrite" url="index.php?tag={R:1}"/>
  </rule>
   

我一想,这是用来给 tag 前台标签能正常访问的伪静态规则,为啥会影响到后台页面呢?后来我猜,有可能是我访问的分类目录和标签的页面都有 edit-tags.php,这不有 tag 单词在里面吗?难道是多匹配了?

这里有两个解决方案,目前还未确定哪种最好,我需要先用一段时间再看吧。

◐◐◐◐●☛█▼▲豪仕知识网███████http://www.haOZ.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

第一种方案:

◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲HtTp://wWW.haoz.net豪仕知识网●●●●●●●●●●●●●●●●●●●●●●●●●●

直接把这段规则删除。

◐◐◐◐●☛█▼▲豪仕知识网http://www.haOz.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

我删除后,无需重启服务器等,分类目录、标签等页面就已经能正常访问了,也能给文章加标签了。

但我猜测这样有可能前台访问类似这样的链接:

HTTP://WWW.haoz.net豪仕知识网采集不好玩哦◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐◐撒旦法师打发斯蒂芬

http://fox-9.com/tag/post/

的时候会找不到网页。

◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲豪仕知识网HtTp://▲▼▲▼▲

但让我诧异的是,访问也是正常的。

目前我用这种方法测试一下后续是否有问题。

◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲豪仕知识网HtTp://▲▼▲▼▲

所以直接删除造成的问题我们后面再看。

◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲豪仕知识网HtTp://▲▼▲▼▲

补充说明一点,我是安装了一个中文 tag 也能显示的插件的,叫做:IIS Chinese Tag Permalink

◐◐◐◐●☛█▼▲豪仕知识网███████http://www.haOZ.net▼▲▼▲▼▲▼▲▼●●●●●●●▼▲▼▲▼▲

这个插件就一个 iis-chinese-tag-permalink.php 文件,它的代码为:


 
  <?php
  /*
  Plugin Name: IIS Chinese Tag Permalink
  Plugin URI: http://blog.bossma.cn/php/in-iis-wordpress-chinese-tag-permalinks-plugin/
  Description: 使IIS下的WordPress可以在友好的固定链接(Pretty Permalink)中使用中文。
  Author: BOSSMA.CN
  Author URI: http://blog.bossma.cn/
  Version: 1.4
  */
  add_action('init', 'bossma_get_urf8_pathandurl');
  add_filter('get_pagenum_link','bossma_set_utf8_pagenumlink');
  add_action('parse_query','bossma_chinese_tag_encode');
   
  // iis encode the url with GBK,but wordpress with utf-8
  function bossma_get_urf8_pathandurl() {
  $_SERVER['PATH_INFO']=iconv("GBK","UTF-8",$_SERVER['PATH_INFO']);
  $_SERVER['REQUEST_URI']=iconv("GBK","UTF-8",$_SERVER['REQUEST_URI']);
  }
   
  // urlencode for chinese tag
  // sometimes preg_match can not match the chinese correctly
  function bossma_chinese_tag_encode($query){
  if(isset($is_tag)&&$is_tag){
  if($query->query_vars['tag']!=''){
  $query->query_vars['tag']=urlencode($query->query_vars['tag']);
  }
  }
  }
   
  //for generate tag pagenum link
  //use utf8 encode
  function bossma_set_utf8_pagenumlink($result){
  $tag_index=stripos($result,"/tag/");
  $link_len=strlen($result);
  if($tag_index!==false){
  $link_base=substr($result,0,$tag_index);
  $page_index=stripos($result,"/page/");
  if($page_index!==false){
  $tag_str=substr($result,$tag_index+5,$page_index-$tag_index-5);
  $result=$link_base."/tag/".rawurlencode($tag_str).substr($result,$page_index);
  }else{
  $tag_str=substr($result,$tag_index+5);
  $result=$link_base."/tag/".rawurlencode($tag_str)."/";
  }
  }
  return $result;
  }
  ?>
   

第二种方案:

将伪静态规则修改为这样,让它匹配不到 edit-tags


 
  <rule name="tags_rewrite">
  <match url="/tag/?(.*)"/>
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false"/>
  <action type="Rewrite" url="index.php?tag={R:1}"/>
  </rule>
    ◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲豪仕知识网HtTp://▲▼▲▼▲

可以看到就多加了一个 /,匹配规则变成了 /tag/?(.*),这样就不会匹配到 edit-tags 路径了。

●☛█▼▲豪仕知识网◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲

目前测试发现,这个方法存在一个问题,就是偶尔的,文章在添加新的标签的时候,或者在所有文章的页面点击 “快速编辑” 按钮的时候会无法编辑或者刷新页面。

如果你也有类似的问题,希望我的文章和解决方案能够帮到你,谢谢!欢迎跟我交流!

◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲◐◐◐◐●☛█▼▲HTTP://WWW.hAoz.net███████████████████████████东方金报网

转载自《雪山凌狐教程》

相关文章

  • 1660ti打得过3050ti吗
    1660ti打得过3050ti吗

    1660ti打不过3050ti,GTX 1660 Ti的游戏性能略低于RTX 3050 Ti。因为RTX 3050 Ti是一款基于Ampere架构的显卡,拥有更多的CUDA核心、更快的显存速度和更强大的光线追踪性能。但是,实际的游戏表现取决于游戏本身的优化和使用的其他硬件组件。在某些特定的游戏中,GTX 1660 Ti也可以取得很好的表现。总的来说,如果你追求更高的游戏性能和未来的光线追踪技术,R...

    2023-06-10 16:34:52
  • 剪影的视频怎么转移到另一台电脑
    剪影的视频怎么转移到另一台电脑

    1、将视频文件复制到剪影编辑软件中,并确保导出的视频文件格式与剪影编辑软件支持的格式一致。2、打开另一台电脑,并确保该电脑上已经安装了可以播放视频的软件。3、在该电脑上打开剪影编辑软件,并导入之前导出的视频文件。4、在剪影编辑软件中选择“导入”选项,然后选择之前导出的视频文件。5、如果需要调整视频的速度或进行其他设置,可以在导入视频后进行相应的调整。6、导入视频后,可以在软件中对视频进行剪辑、调整...

    2023-06-10 16:31:07
  • 红米note12turbo和一加2v哪个好
    红米note12turbo和一加2v哪个好

    红米Note12T Turbo和一加2V在多个方面都有不同的优势,可以根据个人需求来选择。如果你对手机的性能和处理器有较高的要求,且注重拍照效果和充电速度,那么红米Note12T Turbo可能更适合你;如果你对手机的续航和无线充电有较高的要求,且注重拍照效果,那么一加2V可能更适合你。...

    2023-06-10 16:31:05
  • 营运和运营的区别有哪些
    营运和运营的区别有哪些

    1、侧重点不同:营运:营运指的是局部的运行,即运营的实施部分。 运营:运营指的是全局的运行。2、定义不同。3、范畴不同:营运包含了运营,运营还包含了市场。 营运的范畴比运营大,营运是对公司整体的经营,包括了设计、采购、生产、销售、服务等。 运营的范畴比营运小,运营是对公司某个方面的经营,比如说生产某种产品,提供某种服务。...

    2023-06-10 16:31:03
  • 个人阅读档案卡怎么写?
    个人阅读档案卡怎么写?

    1、首先我们肯定要填好读的书籍的名字以及作者是谁。2、其次,要记录好阅读时间,写好是某年某月某日。3、然后,阅读心得,可以写一下你对这本书的看法,比如说:这是一部感人至深的小说,讲述了一个中国农民的生命历程。4、最后,注明读书卡内容可以根据个人需求自由调整,例如增加阅读心得的篇幅、添加书籍分类标签等。...

    2023-06-10 16:31:01
  • 投影仪断开蓝牙连接怎么办
    投影仪断开蓝牙连接怎么办

    1、更换遥控器电池:给遥控器更换新的电池,并在安装电池时检查电池仓里面的弹簧是否有生锈,如果有生锈的情况,及时清理锈迹或者灰尘。2、重新开机。3、重新配对遥控器蓝牙。4、检查电源。5、重新安装投影仪的驱动程序:如果用户使用的是 Windows 操作系统,可以尝试重新安装投影仪的驱动程序;如果用户使用的是 MacOS 操作系统,可以尝试在 MacOS 中重新安装投影仪的驱动程序。...

    2023-06-10 16:30:59
  • 60V怎么转换给12V300w电机用
    60V怎么转换给12V300w电机用

    1、首先,需要找到一个12伏的电源,例如从汽车点烟器中取电或者从墙上的插座中取电。2、然后,需要使用一个变压器,将60伏的电压转换为12伏的电压。变压器可以是理想变压器(理想变压器是一种理论上的变压器,它可以将电压从一种频率变换为另一种频率,而不会产生任何损耗),也可以是电子变压器。3、接下来,需要将电源线连接到变压器的输入端,将电机的接线端连接到变压器的输出端。4、最后,将电源线连接到电机的电源...

    2023-06-10 16:30:58
  • 速溶奶茶粉过期一年还能喝吗
    速溶奶茶粉过期一年还能喝吗

    速溶奶茶粉过期一年是不能喝的。否则可能会对身体健康造成影响,平时喝速溶奶茶的时候也要尽量避免摄入过多,以免对身体健康造成威胁。...

    2023-06-10 16:30:56
  • 灯条闪烁故障解决方法有哪些
    灯条闪烁故障解决方法有哪些

    1、灯具自身故障:如果发现家中照明灯具出现闪烁(时亮时灭)现象,首先应该想到的就是灯坏了,尤其是家中只有单个灯具出现此类现象,那么灯具故障的可能性更高。解决方法:换新的。如果问题仍然存在,那么就可以排除是灯具自身问题了。2、线路或者灯具接触不良。3、驱动电源存在问题: 如果是因为驱动电源存在问题,则更换一个合适的驱动电源即可,更换的新驱动电源一定要与灯珠相匹配。...

    2023-06-10 16:30:54
  • 酚酞指示剂浸泡滤纸后喷碱是否显色
    酚酞指示剂浸泡滤纸后喷碱是否显色

    酚酞指示剂浸泡滤纸后喷碱会显色。酚酞指示剂是一种化学指示剂,它在酸性或中性溶液中会变成红色,而在碱性溶液中会变成蓝色。将滤纸浸泡在含有酚酞的溶液中,再用喷壶喷碱性溶液,滤纸会变成红色,这表明滤纸已经吸收了碱性物质,即已经显色了。...

    2023-06-10 16:30:46