Kommentare 3

Permalinks mit Nginx und WordPress

Nach doch zahlreichen Problemen und nicht laufenden Rewriterules im Internet lies sich WordPress letztlich dennoch überreden, auch mit Nginx vernünftige, SEO freundliche URLs darstellen zu lassen.

if (!-e $request_filename) {
rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 break;
rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;
rewrite ^ /index.php last;
}

Danach funktionieren die Rewriterules auch mit Nginx vernünftig und es müssen keine weiteren Einstellungen für vorhandene Verzeichnisse, oder Grafik- & Styledatein vorgenommen werden.

so aehnlich:

3 Kommentare

  1. Sorry, I don't speak German (though understand it a bit), but your rewritw configuration is not optimal: checking everytime if $request_filename exists negatively imapcts the performance.

    The correct configuration should look like this:

    <code>
    location / {
    log_not_found off;
    error_page 404 = @wordpress;
    }

    location @wordpress {
    fastcgi_pass …;
    fastcgi_param SCRIPT_FILENAME /path/to/blog/index.php;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_NAME /path/to/blog/index.php;
    }

    location ~ .php$ {
    if (!-e $request_filename) {
    rewrite ^(.+)$ /index.php last;
    break;
    }

    fastcgi_index index.php;
    fastcgi_pass ..;
    fastcgi_param SCRIPT_FILENAME /path/to/blog$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
    }
    </code>

    This reduces the number of checks (in fact, only .php files are checked).

    If you use nginx 0.7.x, you can use try_files instead – this seems to be faster.

Schreibe eine Antwort