У меня есть приложение за nginx. Но мне нужен определенный путь в этом приложении для перенаправления в блог Wordpress.
Пример :
example.com/ -------> Перенаправить в мое приложение
example.com/whatever/ -------> Перенаправить тоже на мое приложение
example.com/blog/ -------> Перенаправить на мой блог Wordpress
Итак, я добавляю местоположение, соответствующее этому подпути
server {
listen 80 default_server;
index index.php;
server_name _;
location ^~ /blog {
root /path/to/my/blog;
index index.php index.html;
location ^~ /blog/(.*\.php)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /path/to/my/blog/$fastcgi_script_name;
include fastcgi_params;
}
}
location ~* /(.*) {
#here the conf for the rest of the website
}
}
И когда я пытаюсь получить страницу, у меня в журналах появляется 404 с этой ошибкой:
2016/05/22 15:27:24 [error] 21759#0: *1 open() "/path/to/my/blog/blog/index.php" failed (2: No such file or directory), client: XX.XX.XX.XX, server: _, request: "GET /blog/index.php HTTP/1.1", host: "example.com"
С / blog дублируется.
Как я могу это исправить?
РЕДАКТИРОВАТЬ :
Теперь у меня есть это (спасибо Ричарду Смиту):
location ^~ /blog {
root /path/to/my/;
index index.php;
try_files $uri $uri/ /blog/index.php;
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
}
Но теперь у меня появляется событие index.php, если я пытаюсь создать другой файл (например, toto.html)
Если я заменю
try_files $uri $uri/ /blog/index.php;
с участием
try_files $uri $uri/;
Я получил 404 с
2016/05/22 20:57:21 [error] 22621#0: *1 "/path/to/my/blog/toto.html/index.php" is not found (20: Not a directory), client: 84.98.248.33, server: _, request: "GET /blog/toto.html/ HTTP/1.1", host: "example.com"
в журналах
РЕДАКТИРОВАТЬ 2:
Файл существует и в настоящее время, и я даю ему 777 прав (я удалю их позже, прежде чем перейти в производство):
drwxrwxrwx 2 user group 4096 May 22 20:36 .
drwxr-xr-x 11 user group 4096 May 23 06:20 ..
-rwxrwxrwx 1 user group 126 May 22 13:30 index.php
-rwxrwxrwx 1 user group 102 May 22 10:25 old.index.html
-rwxrwxrwx 1 user group 12 May 22 12:24 toto.html
Спасибо за терпение!
Так как /blog
является первым компонентом URI, вам нужно удалить его из root
. Использовать root /path/to/my
когда внутри location ^~ /blog
.
Видеть этот документ для подробностей.
Кроме того, ваш .php
местоположение неверный синтаксис. Вы можете использовать что-то вроде этого:
location ^~ /blog {
root /path/to/my;
index index.php;
try_files $uri $uri/ /blog/index.php;
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
}
Видеть этот документ для подробностей.
Наконец, остальная часть веб-сайта может использовать обычные местоположения, такие как location /
как ^~
модификатор на вашем location ^~ /blog
дает ему приоритет для любого URI, начинающегося с /blog
. Смотрите мою вторую ссылку для подробностей.