WordPress 固定链接 404 解决方法---配置伪静态

mengkun 3,038 views 2

一般的大型网站系统,都依赖伪静态。如果服务器的伪静态没有配置好,访问部分链接就会出现 404 的情况。

在 WordPress 则具体表现为后台 「固定链接」 选项设置失效。

下面就提供各种 web 环境下的 WordPress 伪静态规则设置教程。

Apache、Kangle 伪静态

下载 Apache -Kangle WordPress 伪静态配置文件,解压后将里面的 .htaccess 上传至网站根目录,然后在 WordPress 后台> 设置> 固定链接> 拉到最下面点击 「保存更改」 即可。

Nginx 伪静态

打开 nginx.conf 或者某个站点的配置环境,比如 xxx.conf(不同的网站配置不一样),在 server { }大括号里面添加下面的代码:

  1. location / {
  2.     index index.html index.php;
  3.     if (-f $request_filename/index.html){
  4.         rewrite (.*) $1/index.html break;
  5.     }
  6.     if (-f $request_filename/index.php){
  7.         rewrite (.*) $1/index.php;
  8.     }
  9.     if (!-f $request_filename){
  10.         rewrite (.*) /index.php;
  11.     }
  12. }
  13. rewrite /wp-admin$ $scheme://$host$uri/ permanent;

然后在 WordPress 后台> 设置> 固定链接> 拉到最下面点击 「保存更改」 即可。

IIS 伪静态

这里强烈不推荐使用 Windows+IIS 建站,因为坑太多!

IIS 的版本不同,伪静态的设置方式也不一样。

如果你的站点根目录有 web.config 文件,则打开 web.config,在 system.webServer 里加入如下代码:

  1. <rewrite>
  2.     <rules>
  3.         <rule name="WordPress" patternSyntax="Wildcard">
  4.             <match url="*"/>
  5.                 <conditions>
  6.                     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
  7.                     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
  8.                 </conditions>
  9.             <action type="Rewrite" url="index.php"/>
  10.         </rule>
  11.     </rules>
  12. </rewrite>

如下图所示:
WordPress固定链接404解决方法---配置伪静态

然后在 WordPress 后台> 设置> 固定链接> 拉到最下面点击 「保存更改」 即可。

如果你的站点根目录没有 web.config 文件,则试试下面这种方法:

先新建一个 txt 文件,将下面的代码复制粘贴过去:

  1. [ISAPI_Rewrite]
  2. # Defend your computer from some worm attacks
  3. #RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]
  4. # 3600 = 1 hour
  5. CacheClockRate 3600
  6. RepeatLimit 32
  7. # Protect httpd.ini and httpd.parse.errors files
  8. # from accessing through HTTP
  9. # Rules to ensure that normal content gets through
  10. RewriteRule /tag/(.*) /index\.php\?tag=$1
  11. RewriteRule /software-files/(.*) /software-files/$1 [L]
  12. RewriteRule /images/(.*) /images/$1 [L]
  13. RewriteRule /sitemap.xml /sitemap.xml [L]
  14. RewriteRule /favicon.ico /favicon.ico [L]
  15. # For file-based wordpress content (i.e. theme), admin, etc.
  16. RewriteRule /wp-(.*) /wp-$1 [L]
  17. # For normal wordpress content, via index.php
  18. RewriteRule ^/$ /index.php [L]
  19. RewriteRule /(.*) /index.php/$1 [L]

然后另存为 httpd.ini 文件,上传到网站根目录,再到 WordPress 后台> 设置> 固定链接> 拉到最下面点击 「保存更改」 即可。

IIS 另类方法

其实还有一种另类的方法,不过不推荐使用此方法,治标不治本。

在网站根目录建立一个 404.php 文件。然后打开编辑,插入如下代码:

  1. <?php
  2. $qs = $_SERVER['QUERY_STRING'];
  3. $_SERVER['REQUEST_URI'] = substr($qsstrpos($qs,':80')+3);
  4. $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
  5. include('index.php');
  6. ?>

参考资料:http://www.admin5.com/article/20130711/514219.shtml

宝塔面板设置伪静态

如果你的服务器上安装了宝塔面板,就方便多了——

在 宝塔面板> 网站> 设置> 伪静态 里选择对应的伪静态规则 (WordPress) 并保存即可。

别忘了必备操作:在 WordPress 后台> 设置> 固定链接> 拉到最下面点击 「保存更改」![aru_41]

后记

如果你按照上述方法设置了还是不起作用,那么有可能是你的服务器压根就没有安装伪静态模块!请自行搜索对应教程安装或联系服务器提供商解决 [aru_31]

发表评论 取消回复
表情 图片 链接 代码

  1. Pizza
    Pizza Lv 1

    环境是 IIS+WORDPRESS,之前找了无数方法,都是失败,按照您的设置,成功了,非常感谢。
    但是存在一个严重的问题,就是一些图片出了问题。比如首页上的自定义图片,在媒体库中存在,但是在首页上不显示,用浏览器访问该图片的真实链接,出现 500 错误,恳请您百忙之中再帮助我下

    • olei
      olei 站长

      @Pizza 提供一下网页地址,我看看呗

分享