我有一个网站正在从旧主机重定向。我无法更改旧主机的重定向。
问题在于重定向在不合适的情况下附加了尾部斜杠。例如: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 中,那么它将捕获所有请求。)