Назад | Перейти на главную страницу

Удалить завершающую косую черту URL Lighttpd

Странный запрос, но мне действительно нужен ответ. Не могли бы вы помочь мне с помощью правил перезаписи, чтобы убрать косую черту в конце URL-адресов в Lighttpd.conf?

НАПРИМЕР:

**A** www.example.com/page/
**B** www.example.com/page

Я хочу, чтобы URL-адрес A был включен в семантику URL-адреса B.

Большое спасибо.

То, что вы пытаетесь сделать, звучит неправильно. Веб-сервер не обрабатывает URL-адреса запросов, которые видит браузер. Это проблема приложения. Ваше веб-приложение должно представлять URL-адреса в виде www.example.com/page вместо того www.example.com/page/ что он делает сейчас.

Если вы не хотите изменять приложение, но все же хотите это желаемое поведение, вы можете рассмотреть возможность использования прокси-сервера фильтрации перед lighty, а затем фильтровать все возвращенные ссылки.

Не совсем по делу, но вы можете захотеть обратный эффект...

В любом случае, что касается кода lighttpd, это было бы что-то вроде этого:

url.redirect = ( "/page/" => "/page" )
url.rewrite-once = ( "/page" => "/page/" )

но, поскольку «/ page» не находит файл и пробует каталог «/ page /» (и перезапись, кажется, ничего не делает, чтобы скрыть это), возникает цикл перенаправления.

Тогда ваш реальный вопрос: можно ли запретить lighttpd перенаправлять на каталоги? К сожалению, я не нашел способа сделать это ... но я не стал глубоко искать, на самом деле я предпочитаю URL-адреса с конечной косой чертой (также визуально) ...

Предположим, вам нужен запрос /foo/bar служить /foo/bar/index.html, и /foo/bar/ перенаправить на /foo/bar. Тогда вы можете сказать:

url.redirect = ("^/foo/bar/$" => "/foo/bar")
url.rewrite-once = ("^/foo/bar$" => "/foo/bar/index.html")

Перезапись непосредственно в индексный файл, а не в /foo/bar/и привязка регулярного выражения перенаправления с помощью $, избегает срабатывания правила перенаправления после перезаписи.