Re: запрет прямого доступа к файлу news.php

actionmanager at gmail.com actionmanager at gmail.com
Sat Nov 21 23:59:48 MSK 2009


> On Sat, Nov 21, 2009 at 09:48:06PM +0300, actionmanager at gmail.com wrote:

>> > actionmanager at gmail.com wrote:
>> >> Здравствуйте,
>> >> 
>> >> при обращении:
>> >>   http://site.ru/news/2009/
>> >>   http://site.ru/news/view/20/
>> >>   http://site.ru/news/
>> >> 
>> >> запросы поступают на news.php
>> >> 
>> >> есть следующий конфиг:
>> >> 
>> >> location /news/ {
>> >>   root   /home/site.ru;
>> >>   rewrite "^/news/((\d{4}))/?" /news.php?year=$1 last;
>> >>   rewrite "^/news/view/((\d{2,5}))/?" /news.php?view=$1 last;
>> >>   rewrite ^/news/$ /news.php last;
>> >> }
>> >> 
>> >> всё работает, но необходимо запретить прямой вызов файла news.php
>> >> 
>> >> http://site.ru/news.php
>> >> 
>> >> посоветуйте пожалуйста как правильно это сделать.
>> 
>> > location = /news.php {
>> >         internal;
>> > }
>> 
>> 
>> неа, не хочет(
>>     404 выдаёт на news.php и тут везде:
>> 
>>    http://site.ru/news/2009/
>>    http://site.ru/news/view/20/
>>    http://site.ru/news/

> Должно работать - только что проверил.


Здравствуйте,

версия nginx-0.8.26
система Debian Linux 5.0
используется php-fpm



404 страница выдаётся как для news.php так и для запросов:

    http://site.ru/news/2009/
    http://site.ru/news/view/20/
    http://site.ru/news/

причём именно из-за:

  location = /news.php {
             internal;
         }

убираю этот location и тогда работает rewrite нормально, но также доступен
прямой доступ к http://site.ru/news.php



полный конфиг:
 server
 {
          listen 127.0.0.1:80;
          server_name site.ru;
         
          client_max_body_size 50m;
          charset utf-8;

          access_log  logs/site.ru_access.log  main;
          error_log  logs/site.ru_error.log error;

          error_page   500 502 503 504  /50x.html;

          location = /50x.html {
             root  /home/site/www/site.ru;
             internal;
          }

         error_page   404  /404.html;

          location = /404.html {
             root  /home/site/www/site.ru;
             internal;
          }

         location = /favicon.ico {
              empty_gif;
         }
           
         location / {
              root   /home/site/www/site.ru;
              index  index.php;
         }

         location /news/ {
              root   /home/site/www/site.ru;
              rewrite "^/news/((\d{4}))/?" /news.php?year=$1 last;
              rewrite "^/news/view/((\d{1,5}))/?" /news.php?view=$1 last;
              rewrite ^/news/$ /news.php last;
     
              # /news/2009/ 
              # /news/view/20/
              # /news/
 
         }

         location = /news.php {
             internal;
         }
     
         location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
             root   /home/site/www/site.ru;   
             access_log off;
         }

         location ~ \.php$ {
              root   /home/site/www/site.ru;
              try_files $uri =404;
              fastcgi_intercept_errors off;
              fastcgi_pass   unix:/var/run/php5/php-fpm.sock;
              fastcgi_index  index.php;
              fastcgi_param  SCRIPT_FILENAME /home/site/www/site.ru$fastcgi_script_name;
              include        fastcgi_params;
        }
}






More information about the nginx-ru mailing list