WordPress用のRewrite Ruleをnginxに設定

nginx_setting_for_wordpress_rewriteWordPressのPermalinkをApache+.htaccessで設定していたのをnginxで実現するための方法を調査。

環境: CentOS 5.8, nginx 1.0.14, PHP 5.3.10, WordPress 3.3.1

参考にしたのは下記Site.

追加したのは下記

if (!-e $request_filename) {
    rewrite ^/(.*)$ /index.php?q=$1 last;
}

WordPressのPermalinks設定画面では"/%postname%/"だけにした。

image

設定File全体は下記。
# vi /etc/nginx/conf.d/01_wordpress.conf

server {
    listen       80;
    server_name  wordpress.hoge.com;

    root    /home/httpd/wordpress/httpdocs;
    index   index.php index.html index.htm;
    charset utf-8;

    location = /robots.txt  { access_log off; log_not_found off; }
    location = /favicon.ico { access_log off; log_not_found off; }

    location ~* \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        include        fastcgi_params;
        client_max_body_size 20M;
    }

    location ~ /\. {
        deny  all;
        access_log off;
        log_not_found off;
    }

    # if the file is not found, forwarded to index.php (permalinks)
    if (!-e $request_filename) {
        rewrite ^/(.*)$ /index.php?q=$1 last;
    }
}

CacheなどPerformanceを考慮した設定はまた今度調べ直す。

 

< Related Posts >