Задать вопрос

Как разместить Wordpress в подкаталоге (NGINX)?

Здравствуйте! Помогите, пожалуйста, не получается разместить WordPress в подкаталоге.
Задача вроде достаточно простая. Сайт должен открываться по адресу site.ru/blog
Корневая директория на сервере /home/server/htdocs/site.ru/www/
Сейчас сайт лежит в подкаталоге blog, т.е. /home/server/htdocs/site.ru/www/blog. В будущем планируется размещение нескольких WP в подкаталогах, например blog1, blog2 и т. п. Хотелось бы, если это возможно, чтобы конфиг не приходилось редактировать при создании нового блога, а он при создании папки все сам понимал что в подпапке WordPress.
Ковыряюсь с конфигами и ничего не выходит, читаю гайды, пробую и результата нет. Главная страницы site.ru/blog не открывается, а предлагает скачать index.php. При этом все остальные страницы работают нормально, например site.ru/blog/category/post - отобразится нормально, а site.ru/blog - предложит скачать index.php
Пример конфига:
server {
	listen   80;
	server_name site.ru www.site.ru;

	root /home/server/htdocs/site.ru/www/;

	access_log /home/server/logs/site.ru/nginx.access.log;
	error_log /home/server/logs/site.ru/nginx.error.log;
	index index.php index.html index.htm;


	#One request per second
	location = /wp-login.php {
		limit_req zone=one burst=1 nodelay;
		include fastcgi_params;
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		limit_req_status 444;
	}

  #cache static files
   location ~ ^/(images|javascript|js|css|flash|media|static)/ {
     		root /home/server/htdocs/site.ru/www;
      		expires 10d;
            access_log off;
    }

  #Block HotLink
	location ~ \.(jpeg|png|gif|jpg)$ {
		valid_referers none blocked site.ru *.site.ru;
		if ($invalid_referer) {
		return 403;
		}
	}

	error_page 404 /404.html;
	error_page 500 502 503 504 /50x.html;
	location = /50x.html {
		root /etc/nginx/error;
	}

	#Nginx Helper

	set $skip_cache 0;

	# POST requests and urls with a query string should always go to PHP
	if ($request_method = POST) {
		set $skip_cache 1;
	}
	if ($query_string != "") {
		set $skip_cache 1;
	}

	# Don't cache uris containing the following segments
	if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
		set $skip_cache 1;
	}

	# Don't use the cache for logged in users or recent commenters
	if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
		set $skip_cache 1;
	}

	if (!-e $request_filename) {
					 rewrite /wp-admin$ $scheme://$host$uri/ permanent;
					 rewrite ^(/[^/]+)?(/wp-.*) $2 last;
					 rewrite ^/[^/]+(/.*.php)$ $1 last;
	 }


	location ~ /purge(/.*) {
	    fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
	}



	#WORDPRESS conf
	location / {
	index index.php
		try_files $uri $uri/ /blog/index.php?$args;

	}

	location /blog/ {
		try_files $uri $uri/ /blog/index.php?$args;
	}

	location ~ \.php$ {
		try_files $uri =404;
		include fastcgi_params;
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_cache_bypass $skip_cache;
					fastcgi_no_cache $skip_cache;
		fastcgi_index index.php;
		fastcgi_cache WORDPRESS;
		fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
		fastcgi_cache_valid 200 301 202 404 60m;
	}

	location = /favicon.ico {
		log_not_found off;
		access_log off;
	}
	location = /robots.txt {
		allow all;
		log_not_found off;
		access_log off;
	}
	location ~ /\. {
		deny all;
	}
	location ~* /(?:uploads|files)/.*\.php$ {
		deny all;
	}

	rewrite /wp-admin$ $scheme://$host$uri/ permanent;

}
  • Вопрос задан
  • 968 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@TraiDeR
Была похожая проблема со скачиванием index.php. Вопрос решился на удивление просто - очистка кэша браузера.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы