I have a few websites that load everything from /static/ folder, exception being the /blog/ subfolder.
With the following nginx configuration, it works because of the @wp named location (doing the rewrite).
I can't make it work without rewrite. With try_files $uri $uri/ /blog/index.php$is_args$args =404;
it doesn't enter the /blog/.*php location. Need to do it because it's not always "blog" in the path.
index index.html index.htm index.php static.php;
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
# $domain is a mapped variable to make it work on staging/production servers.
root /home/static/$domain;
try_files $uri $uri/ =404;
location /static {
# all redirect to /static/index.php if files/directory not found
try_files $uri $uri/ /index.php$args;
}
location @wp {
#rewrite ^/blog(.*) /index.php?q=$1;
rewrite ^ /blog/index.php last;
}
# location ~ /(blog|stuff) { # this is not working
location ^~ /blog {
alias /home/wordpress/$domain;
-------- section to consider ----------
#this does not work
#try_files $uri $uri/ /blog/index.php$is_args$args =404;
#any of the lines below works
#if (!-e $request_filename) { rewrite ^ /blog/index.php last; }
try_files $uri $uri/ @wp;
--------- end of section to consider -----
# location for any php under /blog
location ~ /blog/.+.php$ {
# any of the following 2 lines work
#if (!-f $request_filename) { rewrite ^ /blog/index.php last; }
try_files $uri $uri/ @wp;
include /etc/nginx/fastcgi_params;
# we split the path to return the php script (remove /blog from the beginning)
fastcgi_split_path_info ^/blog(.+.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
}
location ~ .php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ .(jpg|jpeg|gif|png|css|js|ico|svg|eot|ttf|woff|woff2|otf)$ {
access_log off;
expires 30d;
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…