Заранее спасибо за любую помощь.


Обновление: Танки Джерарду Х. Пиллу, ответы Эдриен и некоторые журналы расследований. Я немного подошел к изменению вопроса.
Теперь я твердо понимаю, что последняя косая черта в http://example.com/ - это не простая косая черта в пути, а жестко задокументированная часть URL между портом и путем:
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
(очень стыдно за то, что не знал об этом)
Но все же, почему мой браузер не скрывает эту косую черту в своем обычном поведении? Может ли это быть из-за http: вместо https:? (очень дикое предположение)


Nginx / 1.6.2
Apache / 2.4.10
Debian 8.10

Я использую Nginx в качестве обратного прокси-сервера для Apache (N обрабатывает non-php и статика, A - для php, очевидно).

Почему-то я не могу заставить Nginx переписать, чтобы следовать общей рекомендации по удалению косой черты, чтобы http://example.net/ выглядело как http://example.net

Теперь мой файл конфигурации виртуального хоста nginx выглядит так:

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, ну да, ты был прав: если я regexp переписать как ^(.*)/$ $1; , это на самом деле соответствует "/", но возникает ошибка Zero Length ... (что неудивительно)...

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"

Но все же, КАК этот корневой слэш становится скрытым на любом нормальном сайте?

1 ответ1

0

в основном браузер, показывающий URL без косой черты, является только косметическим. Когда он делает запрос, он все еще просит

GET / HTTP / 1.1
Ведущий: где угодно.

и т.д. в этом случае / это путь. Вы не можете иметь пустой путь. Корневой путь /.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .