ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Ошибка 404 при использовании в УРЛе незаэскейпенных спецсимволов, таких как скобки или тире


  • To: "nginx-ru@xxxxxxxxx" <nginx-ru@xxxxxxxxx>
  • Subject: Re: Ошибка 404 при использовании в УРЛе незаэскейпенных спецсимволов, таких как скобки или тире
  • From: Илья Шипицин <chipitsine@xxxxxxxxx>
  • Date: Mon, 5 Aug 2013 13:11:36 +0600
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; bh=/aUQt7Rx+MSniKlofDKCfmfR17OIuB7toYilGRZuZdw=; b=tQlY/NeRXLNYz2WjQnprUTws2pZSob6aelav1SQoCO8bEsQeqyT3A5qoNaOsLsgpER 6qad78t1vUhJmupNDtnH5Tjv1uMgSdxMNfwo51tCgC1/D2Hdyd2cvjAi3QRDkTvasg9l aTPssxKY8EGTYmP8TPf7jZ7Qj11AQwlB0+K7MvGyHsPYVtnt7L8IFBhMmNjaXhTCqICk NXENz0Ob9VmKFx24v/WZlo7KsNzBNPkzl+bC6k7mo3cQVXk3aLSk2eWmUDMljn1pC9VJ AGGJuI6xqR+l4pJIZ/49D2SQTcuan0gushrcgFWRG3wxJt5B81fg700YgVNc7KNM2P7r Kcng==
  • In-reply-to: <e4ca3f35b229698d7487010fbe8a5646.NginxMailingListRussian@forum.nginx.org>
  • References: <e4ca3f35b229698d7487010fbe8a5646.NginxMailingListRussian@forum.nginx.org>

вы то как хотите, чтобы хитрый урл разбирался силами ZF уже ?
если так, то вполне достаточно настроить nginx на примерно следующий
алгоритм: "если есть локальный файл, отдаем его, иначе роутим на ZF"
это нормальный подход для большинства CMS/CMF, народ же зачем-то
упорно костылит штуки типа

if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}

брр....

try_files рулит, в общем.

есть подозрение, что документация по nginx сильно проседает в плане
"как мне захостить drupal/joomla/ZF/symphony/Cake...."
огромное количество соверешенно нелепых конфигов, по всему интернету.

вот работающий конфиг для ZF:


        server {
                listen 80;
                server_name .xxx.ru;
                root /srv/www/xxx;
                charset utf-8;

                access_log /var/log/nginx/xxx_access.log long buffer=32k;

        location / {
               try_files $uri $uri/ @zend;
               index index.php index.html index.htm;
               add_header Cache-Control max-age=1209600;
        }

        location ~ \.php$ {
               try_files $uri @zend;
               fastcgi_param  SCRIPT_FILENAME
$document_root$fastcgi_script_name;
               fastcgi_pass        127.0.0.1:9000;
               fastcgi_index       index.php;
               include        fastcgi_params;

        }

        location @zend {
               fastcgi_pass   127.0.0.1:9000;
               fastcgi_index  index.php;
               fastcgi_param SCRIPT_FILENAME $document_root/index.php;
               include fastcgi_params;
        }

        location ~ /\. {
          deny  all;
        }

        }


3 августа 2013 г., 20:39 пользователь automatix <nginx-forum@xxxxxxxx> написал:
> Доброго времени суток!
>
> Даблпостинг не есть гуд. Надеюсь на снисходительность админов/модераторов.
> Тем более, что оригинал (http://forum.nginx.org/read.php?2,241421) на другом
> языке.
>
> Дело в следующем. Есть сайт с каталогом городов. На странице каждого города
> есть список линков на виды спорта. (Далее на странице каждого вида спорта
> есть список курсов по данному виду спорта, предлагаемых в данном городе.)
> Выглядит это так:
>
> page "Cities" (/catalog)
> Madrid link: website.tld/catalog/Madrid
> Berlin link: website.tld/catalog/Berlin
> London link: website.tld/catalog/London
>
> page "Sports in London" (/catalog/London)
> Foo link: website.tld/catalog/London/Foo
> Bar (Bar) link: website.tld/catalog/London/Bar (Bar)
> Baz - Baz link: website.tld/catalog/London/Baz - Baz
>
> Проблема в УРЛах со спецсимволами. Если они заэскейпены (например,
> "website.tld/catalog/Berlin/Jeu%20de%20Paume%20%28Real%20Tennis%29"), все
> работает. Если же нет -- то есть юзер сам вводит адрес (например,
> "website.tld/catalog/Berlin/Jeu de Paume (Real Tennis)"), то сервер
> возвращает ошибку 404.
>
> Как это исправить?
>
> Я хочу добиться поведения сервера ? la Wikipedia, когда неважно, вводит ли
> юзер "http://en.wikipedia.org/wiki/Signal_%28electrical_engineering%29"; или
> "http://en.wikipedia.org/wiki/Signal_(electrical_engineering)" -- он всегда
> оказывается на нужной странице.
>
> Заранее спасибо!
>
>
>
> Дополнительная информация:
>
> System properties:
>
> Zend Framework 2 (дело точно не в раутинге, а в вэб-сервере -- запрос даже
> не доходит до приложения), Debian 7, nginx 1.2.1, PHP 5.5.
>
> nginx.conf:
>
> user www-data;
> worker_processes 4;
> pid /var/run/nginx.pid;
>
> events {
> worker_connections 768;
> }
>
> http {
>
> sendfile on;
> tcp_nopush on;
> tcp_nodelay on;
> keepalive_timeout 65;
> types_hash_max_size 2048;
>
> include /etc/nginx/mime.types;
> default_type application/octet-stream;
>
> access_log /var/log/nginx/access.log;
> error_log /var/log/nginx/error.log;
>
> gzip on;
> gzip_disable "msie6";
>
> include /etc/nginx/conf.d/*.conf;
> include /etc/nginx/sites-enabled/*;
> }
>
> ax-common-vhost:
>
> server {
> listen 80;
> server_name
> foo.loc
> bar.loc
> baz.loc
> ;
>
> if ($host ~ ^(?<project>.+)\.(?<area>.+)\.loc$) {
> #set $project $1; # already set
> #set $area $2; # already set
>
> set $folder "$area/$project";
> #set $domain "$project.$area.loc"; # equal to $host
> }
>
> access_log /var/log/nginx/$area/$project.access.log;
> error_log /var/log/nginx/error.log;
>
> gzip on;
> gzip_min_length 1000;
> gzip_types text/plain text/xml application/xml;
>
> client_max_body_size 25m;
>
> root /var/www/$folder/public/;
>
> try_files $uri $uri/ /index.php?$args;
> index index.html index.php;
>
> location / {
> index index.html index.php;
> sendfile off;
> }
>
> location ~ (\.inc\.php|\.tpl|\.sql|\.tpl\.php|\.db)$ {
> deny all;
> }
>
> location ~ \.htaccess {
> deny all;
> }
>
> if (!-e $request_filename) {
> rewrite ^.*$ /index.php last;
> }
>
> location ~ \.php$ {
> fastcgi_cache off;
> #fastcgi_pass 127.0.0.1:9001;
> fastcgi_pass unix:/var/run/php5-fpm.sock;
> fastcgi_read_timeout 6000;
> fastcgi_index index.php;
> include fastcgi_params;
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
> fastcgi_param APPLICATION_ENV development;
> fastcgi_param HTTPS $https;
> }
> }
>
> Posted at Nginx Forum: 
> http://forum.nginx.org/read.php?21,241512,241512#msg-241512
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@xxxxxxxxx
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.