我正在尝试将以下Apache重写转换为Nginx:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} =""
RewriteCond %{REQUEST_URI} \\/$
RewriteCond %{HTTP_COOKIE} !(comment_author|wp\\-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle) [NC]
RewriteCond "%{DOCUMENT_ROOT}/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index.html" -f
RewriteRule .* "/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index.html" [L]
</IfModule>
我所做的是:# Set a variable to work around the lack of nested conditionals
set $cache_uri $request_uri;
# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
set $cache_uri \'no cache\';
}
if ($query_string != "") {
set $cache_uri \'no cache\';
}
# Don\'t cache uris containing the following segments
if ($request_uri ~* "(\\/wp-admin\\/|\\/xmlrpc.php|\\/wp-(app|cron|login|register|mail)\\.php|wp-.*\\.php|index\\.php|wp\\-comments\\-popup\\.php|wp\\-links\\-opml\\.php|wp\\-locations\\.php)") {
set $cache_uri "no cache";
}
# Don\'t use the cache for logged in users or recent commenters
if if ($http_cookie ~* "comment_author|wp\\-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle") {
set $cache_uri \'no cache\';
}
# If the cache file does not exist, pass it of to apache for processing
location / {
try_files /wp-content/cache/page_enhanced/example.com/$cache_uri/_index.html @backend;
}
# Pass off php requests to Apache
location ~* \\.php$ {
include /usr/local/etc/nginx/proxypass.conf;
proxy_pass http://127.0.0.1:80;
}
# Pass off php requests to Apache
location @backend {
include /usr/local/etc/nginx/proxypass.conf;
proxy_pass http://127.0.0.1:80;
}
我想知道的是我是否遗漏了什么?还是做错了什么?