LINUX.ORG.RU

Nginx перенаправление с index.php на 404

 


0

1

Всем привет!

Не могу понять как сделать чтобы при заходе по site.ru/index.php выдавало 404 ошибку. Если набрать site.ru/123.php тоже не идет на страницу с 404.

Вопрос, как сделать чтобы site.ru/*.php выдавало 404 страничку?

вот конфиг

server {
        server_name  site.ru www.site.ru;
#Убрать / на конце страницы
location ~ .+/$ {
rewrite (.+)/$ $1 permanent;
}
# Убрать /////// на конце страницы
if ($request_uri ~ "^[^?]*?//") {
            rewrite "^" $scheme://$host$uri permanent;
        }
## редирект с www
if ($host ~* ^www\.(.+)$) {
set $newhost $1;
rewrite ^ http://$newhost$request_uri permanent;
}
charset utf-8;
        access_log  /var/log/nginx/site.ru.access.log;
        error_log /var/log/nginx/site.ru.error.log;

 root   /var/www/site.ru/public/;
        index index.php index.html index.htm;
        client_max_body_size 100m;


    location / {

      try_files $uri $uri/ /index.php?q=$uri&$args;
	}    

    
location ~* \.(css|js|gif|jpe?g|png|jpg)$ {
                expires 7d;
                add_header Pragma public;
                add_header Cache-Control "public, must-revalidate, proxy-revalidate";
                }

        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }


    error_page  404              /404.html;
    error_page  500              /500.html;
    location = /500.html {
                root /var/www/site.ru/public/;
                internal;
        }

 location ~* ^/.+\.php {

                root /var/www/site.ru/public;
                try_files $uri /index.php =404;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi_params;

                fastcgi_param  SCRIPT_FILENAME /var/www/site.ru/public$fastcgi_script_name;
            fastcgi_pass_header Cookie;       
            fastcgi_ignore_headers Cache-Control Expires Set-Cookie;   
            fastcgi_cache_key "$server_addr:$server_port$request_uri|$cookie_phpsessid";  
            fastcgi_cache fastcgi_cache; 
            fastcgi_temp_path  /tmp/nginx/temp 1 2;
            fastcgi_cache_use_stale updating error timeout invalid_header http_500;
            fastcgi_cache_valid 15s;   
#            fastcgi_cache_valid any 10s; 
            }
}



Последнее исправление: vagon (всего исправлений: 2)

Как вариант заменить

location ~* ^/.+\.php {
На
location ~* ^/index\.php$ {
internal; #Указывает, что location может использоваться только для внутренних запросов

и в конце добавить новый location:
location ~* \.php$ {
    return 404;
}

Deleted
()
Ответ на: комментарий от Deleted

Это сработало!

Возник ещё вопрос как сделать что бы по «site.ru/index.php/что_то» тоже выдавало 404?

vagon
() автор топика
Ответ на: комментарий от Deleted

Отлично!

Спасибо большое за помощь!

vagon
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.