Во вложенной папке в домене я хочу установить блог wordpress. Пользуюсь nginx. URL-адрес для доступа к блогу должен быть таким: example.com/blog
Конфигурация сайта выглядит следующим образом:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location /blog {
alias /var/www/example.comblog/html;
index index.php;
try_files $uri $uri/ /blog/index.php?q=$uri&$args;
}
location ~ /blog/.+\.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Файлы wordpress находятся в папке
/var/www/example.comblog/html. При доступе к example.com/blog,
браузер показывает ошибку 404.
В /etc/php5/fpm/php.ini я адаптировал это: cgi.fix_pathinfo=0
версия nginx: nginx / 1.6.2
/var/log/nginx/error.log ничего интересного не показывает
ОБНОВЛЕНИЕ 1:
После настройки ведения журнала ошибок для отладки (среди прочего) появляются следующие строки. Может это поможет:
open index "/var/www/example.comblog/html/index.php"
internal redirect: "/blog/index.php?"
rewrite phase: 1
test location: "/blog"
test location: ~ "/blog/.+\.php$"
using configuration "/blog/.+\.php$"
http script var: "/blog/index.php"
trying to use file: "/blog/index.php" "/var/www/example.com/html/blog/index.php"
Внутреннее перенаправление кажется неправильным? И в последней строке должен быть /var/www/example.comblog/html/blog/index.php вместо /var/www/example.com/html/blog/index.php. Я подозреваю, что это причина 404. Потому что index.php не существует на /var/www/example.com/html/blog/index.php.
Обновление 2:
Ладно, похоже, есть давняя проблема с использованием псевдонима вместе с try_files.






Ваше местоположение php должно быть вложено в местоположение с псевдонимом - см. мой ответ здесь.