![使用 Apache 删除重定向 URL(.jpg/.htm/.gif/)中的尾部斜杠](https://linux22.com/image/747843/%E4%BD%BF%E7%94%A8%20Apache%20%E5%88%A0%E9%99%A4%E9%87%8D%E5%AE%9A%E5%90%91%20URL%EF%BC%88.jpg%2F.htm%2F.gif%2F%EF%BC%89%E4%B8%AD%E7%9A%84%E5%B0%BE%E9%83%A8%E6%96%9C%E6%9D%A0.png)
我有一个网站正在从旧主机重定向。我无法更改旧主机的重定向。
问题在于重定向在不合适的情况下附加了尾部斜杠。例如:http://example.com/picture.jpg/
或http://example.com/page.html/
。
这导致我的服务器返回 404。
理想情况下,我会修复旧站点的重定向,但却无法做到。
有没有办法删除 URL 末尾的斜杠?这是一个不太复杂的网站(简单的 HTML,没有脚本语言等)。
我查看了一下,但找不到现有的解决方案。
答案1
您可以执行类似下面的操作来从以文件扩展名(、、.jpg
等)结尾的任何 URL 中删除尾随斜杠。.html
.png
RewriteEngine On
RewriteRule ^/?(.+?\.[a-z]{2,4})/$ /$1 [R=302,L]
仅当您测试它运行正常后才将 302(临时)更改为 301(永久)(避免缓存问题)。
更新:http 重定向到 https,并且 https 重写了有趣的尾随斜杠。
如果这些链接全部绑定到 HTTP(而非 HTTPS),那么仅在 HTTP vHost 中执行此重定向并直接重定向到 HTTPS 是有意义的。例如:
RewriteRule ^/(.+?\.[a-z]{2,4})/$ https://example.com/$1 [R=302,L]
(尽管如此,如果它位于 HTTPS 的 vHost 中,那么它将捕获所有请求。)