Nginx网址重写WordPress和ModPageSpeed冲突

时间:2019-07-15 09:57:29

标签: wordpress nginx plesk mod-pagespeed

我在Nginx + ModPagespeed + WordPress上使用Plesk

要延迟加载图像,有一个占位符图像应从此类url加载 https://example.com/pagespeed_static/1.JiBnMqyl6S.gif是动态的,没有实际的文件夹,因此WordPress尝试将其发送到index.php,因为nginx中设置了以下WordPress规则:

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

哪种方法允许它加载图像?我应该检查网址是否等于该请求,然后在其中添加WordPress规则吗?

if($url != 'pagespeed_static/1.JiBnMqyl6S.gif') {
   if (!-e $request_filename) { 
       rewrite ^(.+)$ /index.php?q=$1 last;
   }
}

Ps。刚刚注意到,与WordPress相关的规则捕获到.js wich存在相同的问题,URL为https://example.com/pagespeed_static/js_defer.I4cHjq6EEP.js

以下是nginx指令文件的内容:

# PAGESPEED - - - - - - - - - - 

pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }

pagespeed CriticalImagesBeaconEnabled true;

pagespeed PreserveUrlRelativity on;
pagespeed InPlaceResourceOptimization off;
pagespeed EnableFilters add_head;
pagespeed EnableFilters combine_heads;
pagespeed EnableFilters extend_cache;
pagespeed EnableFilters inline_import_to_link;
pagespeed EnableFilters outline_css;
pagespeed EnableFilters outline_javascript;
pagespeed EnableFilters remove_comments;
pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters combine_css;
pagespeed EnableFilters rewrite_css;
pagespeed EnableFilters inline_css;
pagespeed EnableFilters inline_google_fonts_css;
pagespeed EnableFilters fallback_rewrite_css_urls;
pagespeed EnableFilters rewrite_style_attribute;
pagespeed EnableFilters rewrite_style_attributes_with_url;
pagespeed EnableFilters flatten_css_imports;
pagespeed EnableFilters prioritize_critical_css;
pagespeed EnableFilters sprite_images;
pagespeed EnableFilters rewrite_javascript;
pagespeed EnableFilters combine_javascript;
pagespeed EnableFilters inline_javascript;
pagespeed EnableFilters defer_javascript;
pagespeed EnableFilters inline_images;
pagespeed EnableFilters recompress_images;
pagespeed EnableFilters convert_png_to_jpeg;
pagespeed EnableFilters resize_images;
pagespeed EnableFilters convert_to_webp_lossless;
pagespeed EnableFilters insert_image_dimensions;
pagespeed EnableFilters inline_images;
pagespeed EnableFilters jpeg_subsampling;
pagespeed EnableFilters recompress_jpeg;
pagespeed EnableFilters recompress_png;
pagespeed EnableFilters recompress_webp;
pagespeed EnableFilters lazyload_images;
pagespeed LazyloadImagesAfterOnload off;
pagespeed EnableFilters strip_image_color_profile;
pagespeed EnableFilters strip_image_meta_data;
pagespeed EnableFilters resize_images;
pagespeed EnableFilters resize_rendered_image_dimensions;
pagespeed EnableFilters inline_preview_images;
pagespeed EnableFilters resize_mobile_images;
pagespeed DisableFilters elide_attributes;
pagespeed DisableFilters include_js_source_maps;
pagespeed EnableFilters insert_dns_prefetch;

# WORDPRESS - - - - - - - - - - - - -

location ~ /\.ht { deny all; }
location ~* wp-config.php { deny all; }
location ~* "^/wp-content/(?!plugins/).*\.php" { deny all; }
if (!-e $request_filename) { rewrite ^(.+)$ /index.php?q=$1 last; }

2 个答案:

答案 0 :(得分:2)

通过使用一些plesk支持页面上提出的其他解决方案来解决。 因此,不要使用

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

谁应该使用

if (!-e $request_filename) { set $test P; }
if ($uri !~ ^/(pagespeed|plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon)) { set $test "${test}C"; }
if ($test = PC) { rewrite ^/(.*)$ /index.php?$1; }

答案 1 :(得分:0)

我从未使用过plesk,但是通常我只用if替换那些try_files行,就像这样:

try_files $uri /index.php?q=$uri&$args;

这会将对现有文件的所有请求发送到这些文件,并将所有其他请求发送到index.php,并以请求的URL和可能的其他自变量作为自变量,就像在代码中一样。

仅显示了部分配置,所以我无法判断try_files行是否需要位于location块之外或内部。

作为一般准则,在nginx documentation之后,我会尽量避免使用if(有时,这是不可能的)。