ПРОЕКТЫ 


  АРХИВ 


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]

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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Ошибка 404 при использовании в УРЛе незаэскейпенных спецсимволов, таких как скобки или тире
  • From: "automatix" <nginx-forum@xxxxxxxx>
  • Date: Sat, 03 Aug 2013 10:39:58 -0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=helium.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=FqAjE66yIZCokzIHN+h9gQc4gX5/u/zH8BfqBH/sEFQ=; b=X/PusVe9i8ZKL2FkPEzyyGEAK8+Q4X1Jz4Y+1tfaSf8aXrW7/XxXj+utSbtzhjJjnMpkyorq35Bg5Fk1WHVYgHxx6XzAm9tX7EhkwkAz1bkGg5cL7sKzZOYCiFi/zWGvHTDiui/pdBdVkBtrUnU7/HTiY8tloXHXQNHAcnlbWqU=;

Доброго времени суток!

Даблпостинг не есть гуд. Надеюсь на снисходительность админов/модераторов.
Тем более, что оригинал (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


 




Copyright © Lexa Software, 1996-2009.