avatar

Nginx WordPress 自定义404页面

这个是网上找到的Nginx用的rewrite规则,本来没什么大问题,但是今天搞自定义404页面的时候出问题了

if (-f $request_filename/index.html){
    rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
    rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
    rewrite (.*) /index.php;
}

本来的话,这样配置,然后在主题中定义一个404.php的页面即可
如果想使用Web Server所定义的404页面必须启用fastcgi_intercept_errors on;

但是问题出来了 因为 if (!-f $request_filename) 定义关系,无法正常的跳转到Web Server所配置的正确的404页面
fastcgi_intercept_errors off 的模式下 是自动调用当前模板的 404.php 页面的, 没有404.php的主题一般会拦截手动拦截下,显示相关信息

目前使用官方的配置文件后,正常
完整配置文件

server {
    listen  80;
    server_name  b.doneta.org;
    root  /webroot/blog;
    index  index.html index.htm index.php;
    location ~ .*\.(php|php5)?$ {
        include  php_fastcgi.conf;
    }
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    if (!-e $request_filename) {
        rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
        rewrite ^/[_0-9a-zA-Z-]+.*(/wp-admin/.*\.php)$ $1 last;
        rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
    }
    include  error_page.conf;
}

以上配置文件推荐!!! 从Wordpress官方挖出来的~~

Comments ( 2 ) Trackbacks ( 1 ) Leave a Reply
  1. avatar
    我一般都把 location / { } 放到第一个位置上,呵呵。 另外,刚进你博客还以为facebook解封了呢,哈哈。
  2. avatar
  • ☆*:.。. o(≧▽≦)o .。.:*☆
  • _(:з」∠)_
  • ♪(´ε` )
  • ψ(`∇´)ψ
  • (-_-#)
  • (=´∀`)人(´∀`=)
  • \(//∇//)\
  • ♪(*^^)o∀*∀o(^^*)♪
  • (((o(*゚▽゚*)o)))
  • (´・_・`)
  • σ(^_^;)
  • ( *`ω´)
  • (ノ`Д´)ノ
  • (( _ _ ))..zzzZZ
  • ( ̄▽ ̄)
  • ヽ(`Д´#)ノ
  • ((((;゚Д゚)))))))
  • (>_<)
  • (T_T)
  • ( T_T)\(^-^ )
  • ε=ε=ε=ε=ε=ε=┌(; ̄◇ ̄)┘