WP Super Cache – rewrite rules для nginx
28.11.2008
Если вы решились прочитать это пост, значит вы решили перейти (или уже перешли, что вероятнее всего) с 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".
Tags: apache, Cookie, htaccess, HTML, Mihalytch, nginx, PHP, rewritecond, UTF-8
Оставить комментарий