2016-07-18 5 views
0

Я использую Nginx по производству окр, у нас есть URL с двойной слэш Ури, как это:Nginx двойной слеш после домена переписать

http://foo.com//bar/foo 

я хочу переписать или перенаправлять:

http://foo.com/bar/foo 

опция «merge_slashes» он уже включен, и я попытался это:

merge_slashes off; 
rewrite (.*)//+(.*) $1/$2 permanent; 

, но не работает, есть ли у вас какие-либо идеи?

благодаря

EDIT:

так, переписывающаяся работа, если слэш после первого "/", то есть:

http://pippo.it/foo//bar 

но если двойной слеш это после того, как домен Безразлично tt, т. е.

http://pippo.it//foo/bar 

Я попытался сбросить переменную $ request_uri, и это re sult:

url: http://pippo.it//foo/bar 
expect: $request_uri -> //foo/bar 
result: $request_uri -> /foo/bar 

url: http://pippo.it///foo/bar 
expect: $request_uri -> ///foo/bar 
result: $request_uri -> //foo/bar 

может быть ошибкой?

EDIT 2:

я нашел ошибку, проблема заключается в ELB (AWS), если я называю непосредственно экземпляр EC2 (где Nginx он установлен) я могу увидеть первые 2 косые черты, но если я позвоните в локоть, балансировщик нагрузки удалите первую косую черту, я открыл корпус в центре поддержки.

EDIT 3:

нашел проблему: если вы установите ELB с HTTP слушателем, я не знаю, почему, но запрос не имеет все косую черту, если вы установите слушатель в режиме TCP, запрос работа хорошо.

Благодаря

ответ

0

Дайте этому попытку:

echo 'http://foo.com//bar/fool' | sed 's/\/\//\//g' 

Это использует команду sed Unix для поиска // и заменить их /.

+0

Ваше выражение не работает, правильный синтаксис это это sed/\/\ // \ // g ' –

+0

Упс! Спасибо что подметил это. – Paradox

1

Настройка на самом деле правильная. Протестировано с помощью nginx/1.9.12

[email protected]:/etc/nginx/sites-enabled# curl -I localhost//    
HTTP/1.1 301 Moved Permanently 
Server: nginx/1.9.12 
Date: Mon, 18 Jul 2016 20:34:29 GMT 
Content-Type: text/html 
Content-Length: 185 
Location: http://localhost/ 
Connection: keep-alive 

Вы перезагрузили настройки при запуске nginx?

nginx -s reload 
+0

Я не знаю почему, но у меня есть nginx/1.10, но не работает: 'MillenniumFalcon-2: Desktop Gianmarco $ curl -I https://pippo.com//it/milano/ HTTP/1.1 200 OK Access-Control-Allow-Origin: * Cache-Control: max-age = 3660, public, s-maxage = 600 Content-Type: text/html; кодировка = UTF-8 Дата: Tue, 19 Jul 2016 13:46:15 GMT Сервер: Nginx/1.10.0 Set-Cookie: Vary: Accept-Encoding Vary: Accept-Language Варах: Происхождение соединения : keep-alive' –

+0

Давайте посмотрим полную конфигурацию nginx? возможно, некоторые другие директивы тормозной логики. – ecto

+0

Это конфигурация: 'listen 80 default_server; имя_сервера pippo.it; root /var/www/pippo.it/current/web; местоположение/{ try_files $ uri /app.php$is_args$args; } местоположение ~ ^/app \ .php (/ | $) { fastcgi_pass unix: /var/run/php5-fpm.sock; fastcgi_split_path_info^(. + \. Php) (/.+) $; включают fastcgi_params; fastcgi_param REQUEST_URI $ request_url; fastcgi_param SCRIPT_FILENAME $ realpath_root $ fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $ realpath_root; fastcgi_param HTTPS on; fastcgi_buffering off; } } ' –

Смежные вопросы