xintrea
Новичок
[Nginx] Сторонний PHP-форум на сайте с ЧПУ
Здравствуйте!
Имею сайт с ЧПУ, который отображается по следующим правилам:
- Если это картинка или архив, файл выдается напрямую
- В остальных случаях УРЛ вида http://site.ru/site/page/index преобразуется в http://site.ru/index.php?site/page/index.
Эти правила описаны в конфигурации следующим образом:
Теперь нужно, чтобы на сайте отображался форум punbb. Я положил его в директорию /punbb относительно корня сайта (т.е. абсолютный путь - /var/www/webhamster/punbb). И теперь не могу понять, как его отображать таким образом, чтоб на него не действовали правила преобразования ЧПУ.
Я пробовал дописать вот так (регвыр пока просто "punbb" чтоб срабатывало наверняка):
но толи реврайт в "location /" всеравно срабатывает, ибо "location /" имеет более высокий приоритет (так ли это?), либо еще что-нибудь, может быть последовательность описания локаций имеет влияние, хотя я перемещал по-всякому, в общем, эффекта нет.
При открытии URL "site.ru/punbb" я вижу либо попытку вызвать скрипт по ЧПУ, либо "403 Forbidden". Думал, дело в правах, но права выставлены по той же схеме, что и у основного сайта. Видимо, это из-за того, что нужно прописать опцию index, пока не знаю.
При открытии URL "site.ru/punbb/index.php", файл index.php отдается напрямую (то есть без выполнения). То есть, на "location ~ \.php$" с FastCGI бакэндом обработка не переходит (а из "location /" волшебным образом переходит).
Тогда я прописал так:
В этом случае при открытии URL "site.ru/punbb/index.php" выдается ошибка "500 Internal Server Error". А в логе ошибка:
Здравствуйте!
Имею сайт с ЧПУ, который отображается по следующим правилам:
- Если это картинка или архив, файл выдается напрямую
- В остальных случаях УРЛ вида http://site.ru/site/page/index преобразуется в http://site.ru/index.php?site/page/index.
Эти правила описаны в конфигурации следующим образом:
Код:
location / {
root /var/www/webhamster;
index index.html index.htm;
if (!-f $request_filename) {
rewrite ^(.*) /index.php?$1 last;
}
}
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|txt|js|zip|rar|tar.gz)$
{
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:8888;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/webhamster$fastcgi_script_name;
}
Я пробовал дописать вот так (регвыр пока просто "punbb" чтоб срабатывало наверняка):
Код:
location ~* punbb
{
}
При открытии URL "site.ru/punbb" я вижу либо попытку вызвать скрипт по ЧПУ, либо "403 Forbidden". Думал, дело в правах, но права выставлены по той же схеме, что и у основного сайта. Видимо, это из-за того, что нужно прописать опцию index, пока не знаю.
При открытии URL "site.ru/punbb/index.php", файл index.php отдается напрямую (то есть без выполнения). То есть, на "location ~ \.php$" с FastCGI бакэндом обработка не переходит (а из "location /" волшебным образом переходит).
Тогда я прописал так:
Код:
location ~* punbb
{
if (!-f $request_filename) {
rewrite ^(.*) $1 last;
}
}
В общем, вопрос - как в моем случае написать конфигурацию, чтобы работал сторонний форум, и в нем не срабатывали изменения урла, описанные для всех остальных страниц сайта?[error] 7323#0: *1 rewrite or internal redirection cycle while processing "/punbb/"