O navegador da Web não oculta a barra raiz na URL entre o host e o caminho

0


Agradecemos antecipadamente por qualquer ajuda fornecida.

Atualização: Tanques para Gerard H. Pille , Adrien responde e algumas investigações de logs eu vim para transformar a questão um pouco.
Agora eu percebo firmemente que a barra final em http://example.com/ não é uma simples barra no caminho, mas uma parte documentada da URL entre porta e caminho :scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
(muito envergonhado por não saber disso)
Mas ainda assim, por que o meu navegador não oculta essa barra em seu comportamento convencional? Poderia ser por causa de http: em vez de https:? (palpite muito selvagem)

nginx / 1.6.2
Apache / 2.4.10
Debian 8.10

Estou usando o Nginx como um proxy reverso para o Apache (N está processando não-php e estática, A é para php, obviamente).

De alguma forma, não consigo fazer uma reconfiguração do Nginx para seguir a recomendação comum de remoção da barra à direita para tornar o http://example.net/ parecido com http://example.net

Agora meu arquivo de configuração do host virtual nginx tem esta aparência:

server {
    listen   80;

    root /var/www/example.net/;
    index index.html index.htm;

    server_name example.net;

    #Can't make this work as intended
    rewrite ^http://(example.net)/$ http://$1 permanent;
    #Also tried
    #rewrite ^http://(.*)/$ http://$1 permanent;
    #And
    #rewrite ^/(example.net)/$ /$1 permanent;

    location / {
    try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {

    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8080;

     }

     location ~ /\.ht {
            deny all;
    }
}


@ GerardH.Pille , bem, sim, você estava certo: se eu regexp reescrever como ^(.*)/$ $1; , ele realmente corresponde a "/", mas o erro Comprimento Zero ocorre ... (o que não é surpreendente) ...

2018/01/17 20:42:39 [notice] 1309#0: *5 "^(.*)/$" matches "/", client: 10.0.2.2, server: example.net, request: "GET / HTTP/1.1", host: "example.net"
2018/01/17 20:42:39 [notice] 1309#0: *5 rewritten data: "", args: "", client: 10.0.2.2, server: example.net, request: "GET / HTTP/1.1", host: "example.net"
2018/01/17 20:42:39 [error] 1309#0: *5 the rewritten URI has a zero length, client: 10.0.2.2, server: example.net, request: "GET / HTTP/1.1", host: "example.net"

Mas ainda assim, como essa barra raiz fica escondida em qualquer site normal?

    
por Denis.Z 17.01.2018 / 09:11

1 resposta

0

basicamente, o navegador mostrando uma URL sem a barra final é apenas cosmético. Quando faz o pedido, ainda pede

GET / HTTP / 1.1
Host: onde quer que esteja.

neste caso, é o caminho. Você não pode ter um caminho vazio. O caminho da raiz é /.

    
por 24.01.2018 / 01:25