Заранее спасибо за любую помощь.
Обновление: Танки Джерарду Х. Пиллу, ответы Эдриен и некоторые журналы расследований. Я немного подошел к изменению вопроса.
Теперь я твердо понимаю, что последняя косая черта в 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"
Но все же, КАК этот корневой слэш становится скрытым на любом нормальном сайте?