实现 WordPress for BAE 的404页面在原 URL 输出

先吐槽一下:我说现在站长这个称呼怎么越来越不值钱了,在各种简易建站程序满天飞的年代,是个人都能建个网站,各种伸手党更是遍地都是,搜索引擎就能解决的事,非得问别人。

 

在实现 YouBBS for BAE Issue 11 的时候,我发现 BAE 配置文件中的 errordoc 无论指向静态文件还是动态文件,都会跳转,对用户体验不太好,在反复测试后,终于找到了解决办法,不太好,但管用。

解决方法很简单,删掉

1
- errordoc : 404 error/404.html

在最后加入

- url : ^/.+$
  script : wp-content/themes/inove/404.php

这里的 wp-content/themes/inove/404.php 只是个示例,至于怎么写那是你的事了,但至少应该有

header('HTTP/1.1 404 Not Found');
header('Status: 404 Not Found');

最后附上我的 app.conf 供参考

handlers:
  - errordoc : 403 static/error/403.html
  - errordoc : 500 static/error/500.html

  - expire : .jpg modify 10 years
  - expire : .swf modify 10 years
  - expire : .png modify 10 years
  - expire : .gif modify 10 years
  - expire : .JPG modify 10 years
  - expire : .ico modify 10 years
  - expire : .js modify 10 years
  - expire : .css modify 10 years

  - url : ^/favicon\.ico$
    script : static/favicon.ico
  - url : ^/robots\.txt$
    script : static/robots.txt
  - url : ^/sitemap\.xml$
    script : sitemap.xml
  - url : ^/sitemap_baidu\.xml$
    script : sitemap_baidu.xml
  - url : ^/sitemap\.html$
    script : sitemap.html
  - url : ^/sitemap\.xml\.gz$
    script : sitemap.xml.gz
  - url : ^/error/(.+)$
    script : error/$1
  - url : ^/static/(.+)$
    script : static/$1
  - url : ^/wp\-admin/$
    script : wp-admin/index.php
  - url : ^/wp\-admin/(.+)$
    script : wp-admin/$1
  - url : ^/wp\-content/(.+)$
    script : wp-content/$1
  - url : ^/wp\-includes/(.+)$
    script : wp-includes/$1
  - url : ^/\d\d\d\d/\d\d$
    script : index.php
  - url : ^/\d\d\d\d/\d\d/feed$
    script : index.php
  - url : ^/\d\d\d\d/\d\d/page/\d+$
    script : index.php
  - url : ^/category/.+$
    script : index.php
  - url : ^/tag/.+$
    script : index.php
  - url : ^/page/\d+$
    script : index.php
  - url : ^/author/.+$
    script : index.php
  - url : ^/about$
    script : index.php
  - url : ^/about/feed$
    script : index.php
  - url : ^/feed$
    script : index.php
  - url : ^/comments/feed$
    script : index.php
  - url : ^/.+\.html$
    script : index.php
  - url : ^/.+\-.+\.html/feed$
    script : index.php
  - url : ^/.+\-.+\.html/trackback$
    script : index.php
  - url : ^/$
    script : index.php
  - url : ^/(.+)\.php$
    script : $1.php
  - url : ^/.+$
    script : wp-content/themes/inove/404.php

至于 403 和 500 为什么没这么做,我没有找到 WordPress 中有返回 403 的地方,而 500 是服务器错误,你想想服务器都出问题了,还怎么执行 php 文件?

 

越来越讨厌 WordPress 的编辑器了……


实现 WordPress for BAE 的404页面在原 URL 输出
https://www.sinosky.org/404-page-not-rewrite-of-wordpress-for-bae/
作者
Jat
发布于
2013年4月22日
许可协议