WP Super Cache – rewrite rules для nginx

nginxЕсли вы решились прочитать это пост, значит вы решили перейти (или уже перешли, что вероятнее всего) с  apache на nginx. Движок вашего сайта WordPress, и необходимо использовать плагин “WP Super Cache”. Текущая статья посвящена тому, как настроить rewrite rules под nginx.

Super Cache после установки и активации попросит нас сделать .htaccess доступным для записи или записать в него следующие правила:

# BEGIN WPSuperCache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
AddDefaultCharset UTF-8
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html [L]
</IfModule>
# END WPSuperCache

Но проблема в том, что все эти правила, как и сам .htaccess, абсолютно бесполезны для nginx`a, так как все rewrite rules прописываются в nginx.conf.

Итак  открываем файл конфигурации nginx.conf, находим

location /путь/к/блогу/ {
...
}

“/путь/к/блогу/” – вот вместо этого, скорее всего, будет стоять просто “/”

и между фигурными скобочками вписываем ряд директив:

gzip_static on;
if (-f $request_filename) {
 break;
}  

set $supercache_file '';
set $supercache_uri $request_uri;  

if ($request_method = POST) {
 set $supercache_uri '';
}  

if ($query_string) {
 set $supercache_uri '';
}  

if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
 set $supercache_uri '';
}  

if ($supercache_uri ~ ^(.+)$) {
 set $supercache_file /blog/wp-content/cache/supercache/$http_host/$1index.html;
}  

if (-f $document_root$supercache_file) {
 rewrite ^(.*)$ $supercache_file break;
}  

if (!-e $request_filename) {
 rewrite . /blog/index.php last;
}

Сохраняем и перезапускаем сервер.

P.S. Если мы хотим пользоваться gzip компрессией, то необходимо будет перекомпилировать nginx с параметром “–-with-http_gzip_static_module“.

Leave a Reply




*