.htaccess中的自定义Wordpress 404s(复数)

时间:2014-07-07 18:42:23

标签: wordpress .htaccess http-status-code-404

我需要抓住我的wordpress网站中的所有404,并根据原始网址请求重定向它们。例如,如果以下是404

http://example.com/news/123.html

我需要将其重定向到

http://example.com/news

我会有多个这样的实例,如下面的404

http://example.com/hats/greenhat.html

将转到

http://example.com/hats

我无法弄清楚如何在Wordpress中执行此操作。在我的.htaccess文件中,这是我的第一行

ErrorDocument 404 http://example.com/my-custom-404.php

但不是重定向到my-custom-404.php,它仍然会转到默认的wordpress 404页面。

这是我的htaccess供参考

 ErrorDocument 404 http://example.com/index.php


 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase / 

 #Rewrite 404s to the news section
 RewriteCond %{REQUEST_URI} ^/404/$
 RewriteRule ^(.*)$ /news/index.php [R=301,L]

 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d

 RewriteCond %{HTTP_HOST} !^example.com$ [NC]
 RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

 # THE WordPress
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
 </IfModule>

在我作为测试的文件中,我试图将所有404重写为/news/index.php,这不起作用 - 一切仍然是wordpress 404页面

1 个答案:

答案 0 :(得分:1)

Wordpress拥有自己处理404的方式。在WP主题中,你可以创建一个名为404.php的文件,在该文件中有一个PHP代码:

  1. 使用$_SERVER['REQUEST_URI']
  2. 读取当前请求URI
  3. 从URI中找到/
  4. 的最后一个索引
  5. 使用substring函数在最后/之后删除部分并重定向