Настроить: nginx / 1.4.6, Ubuntu / 14.04.3 LTS, Wordpress / 4.5.4
Я запускаю Wordpress из подкаталога (следил за этой статьей: Использование уже существующего подкаталога install), и единственный способ заставить сайт работать - это включить его в конфигурацию nginx:
location / {
try_files $uri /wordpress$uri/ /wordpress/index.php?$args;
}
... но с этим я не могу получить доступ к панели администратора. В любой другой конфигурации nginx я вижу содержимое HTML, но получаю 404 для каждого внешнего ресурса (css, images, js и т. Д.).
Я пробовал много разных конфигураций, но без результатов после этих сообщений (среди многих других):
Текущая конфигурация nginx:
server {
listen 80;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php;
server_name mysite.com;
location / {
#try_files $uri $uri/ /index.php?$args;
#try_files $uri /wordpress$uri/ /wordpress/index.php?$args;
}
location /wordpress {
try_files $uri $uri/ /wordpress/index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
Вот настройка местоположения, которую я использую для запуска wordpress в подкаталоге "blog". Для more_clear_headers требуется правильный модуль, скомпилированный в Nginx.
location / {
# If the file can't be found try adding a slash on the end - it might be
# a directory the client is looking for. Then try the Wordpress blog URL
# this might send a few requests to PHP that don't need to go that way
try_files $uri $uri/ /blog/index.php?$args;
more_clear_headers Server; more_clear_headers "Pragma"; more_clear_headers "Expires";
}
Эта часть полезна
# Add trailing slash to */wp-admin requests.
rewrite /blog/wp-admin$ $scheme://$host$uri/ permanent;
Для большинства это необязательно, но я изменяю кучу заголовков для страниц, не являющихся админскими, чтобы убедиться, что заголовки по умолчанию передаются.
# Wordpress admin caching headers are set correctly, for pages and resources. The only reason we define
# this block separately is to avoid messing with the headers in the main php block.
# This is probably unnecessary because of the skip_cache variable and may be removed
location ~* wp-admin {
fastcgi_keep_conn on;
fastcgi_pass php56-fpm;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
}
у меня есть Wordpress / Nginx учебник может оказаться полезным. Он включает файлы конфигурации, которые вы можете скачать, хотя я не думаю, что на самом деле включаю этот шаблон Wordpress в подкаталог - не уверен на 100%.