Страница 1 из 1

nginx редирект с не сущетвующих директорий файлов.

Добавлено: 2015-11-26 16:22:45
bagas
Добрый день.
Подскажите пожалуйста.
Есть сайт, работает хорошо, с недавних пор понадобилось из одной директории сайта сделать редирект на index.php этой диретокрии от несуществующих файлов/директорий в ней.
В апаче все просто, в директории сайта api создаешь .htaccess с таким содержимым.

Код: Выделить всё

Options +FollowSymLinks
IndexIgnore /
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

Код: Выделить всё

server {
        listen 1.0.1.2:80;
        root /usr/local/www/default;
}
server {
        listen 1.0.1.2:80;
        server_name www.ru;
        error_log /var/log/nginx/www.error_log info;
        root /usr/local/www/www.ru/web;
        index index.php index.html index.htm default.html default.htm;
        open_file_cache max=15024 inactive=60s;
        open_file_cache_valid 300s;
        open_file_cache_min_uses 2;
        open_file_cache_errors on;

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

location ~ \.php$ {
        fastcgi_pass unix:/tmp/www.sock;
        fastcgi_index index.php;
        include fastcgi_params;
	fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
#       fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_ignore_client_abort off;
	try_files $uri =404;
}

location /pma/ {
        alias /usr/local/www/phpMyAdmin/;
        index index.php;
        auth_basic           "closed site";
        auth_basic_user_file /usr/local/.htpasswd;
location ~ \.php$ {
        fastcgi_pass unix:/tmp/www.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_ignore_client_abort off;
        fastcgi_param PHP_ADMIN_VALUE "xcache.cacher=Off";
        fastcgi_param PHP_ADMIN_VALUE "xcache.stat=Off";
        fastcgi_param PHP_ADMIN_VALUE "xcache.optimizer=Off";
   }
}

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

}

location ~ /\.(ht|svn|git) {
        deny all;
}
}
При таком варианте как index,php открывается, но ошибка 500.

Так же пробовал и такой варинат.
При таком вовсе не работает.

Код: Выделить всё

location /api/ {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php;
}
}
Подскажите, как быть. как лучше сделать?
Спасибо за понимание.

nginx редирект с не сущетвующих директорий файлов.

Добавлено: 2015-12-03 23:04:35
Amadeus
И снова добрый день).

Давайте по другому.
1) Линк для примера
2) Линк как хотелось бы что бы было.