I’m switching a WordPress site from Apache to Nginx.
We’re trying to obfuscate the fact that it’s a WordPress site (I don’t know why, but those are the requirements).
There are a few calls to static assets within the wordpress directory, so it’s not perfect.
For the most part, it’s working (www.example.com and other pages within show up properly), but I can’t get the Admin page to work.
When you go to example.com/wp-admin, the server should load /var/example.com/docroot/wordpress/wp-admin/index.php, but I keep getting a 404.
I’m not sure where I’ve gone wrong. This is my server conf:
server {
server_name *.example.com;
root /var/example.com/docroot;
access_log logs/access.log;
error_log logs/error.log debug ;
gzip off;
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
# Rewrite wp-content to pretend we don't use WordPress
location ~ ^/content/(.*)$ {
alias /var/example.com/docroot/wordpress/wp-content/$1;
}
location ~ ^/wp-content/(.*)$ {
alias /var/example.com/docroot/wordpress/wp-content/$1;
}
location ~ ^/includes/(.*)$ {
alias /var/example.com/docroot/wordpress/wp-includes/$1;
}
location ~ ^/wp-includes/(.*)$ {
alias /var/example.com/docroot/wordpress/wp-includes/$1;
}
location /wp-admin {
alias /var/example.com/docroot/wordpress/wp-admin;
}
# Basic php configuration
location ~ \.php$ {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
try_files $uri =404;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
# static assets and blocking specific access
include sites-enabled/common.conf;
}
The two things I did to get this to work:
Proxy_pass instead of alias
And for the try_files directives, added a wordpress$uri option: