删除 Lighttpd url 末尾的斜杠

删除 Lighttpd url 末尾的斜杠

一个奇怪的请求,但我真的需要答案。你们能帮我使用重写规则从 Lighttpd.conf 中的 URL 中删除尾部斜杠吗?

例如:

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

我想让 url A 被强制纳入 url B 的语义。

非常感谢。

答案1

你想做什么听起来错误的。Web 服务器不处理浏览器看到的请求 URL。这是应用程序问题。您的 Web 应用程序需要以 的形式呈现 URL,www.example.com/page而不是www.example.com/page/现在的形式。

如果您不想更改应用程序但仍希望获得这种期望的行为,您可能需要考虑在 lighty 前面使用过滤代理,然后过滤所有返回的链接。

答案2

不是重点,但你可能想要相反的效果...

无论如何,就 lighttpd 代码而言,将会像这样:

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

但是,由于“/page”找不到文件并尝试目录“/page/”(并且重写似乎没有采取任何措施来隐藏这一点),这确实产生了重定向循环。

那么你真正的问题就是:是否可以告诉 lighttpd 不要在目录上重定向?不幸的是,我没有找到办法……但我没有深入搜索,事实上我确实更喜欢带有尾部斜杠的 URL(也是视觉上的)……

答案3

假设你想让请求/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/,并使用锚定重定向正则表达式$,避免重写后触发重定向规则。

相关内容