重定向到规范域

问题描述 投票:0回答:1

我正在尝试设置一个规则,以便来自替代域的请求被重定向到规范域,保持请求路径和查询字符串完整。我需要使用

.htaccess
,因为它是共享托管帐户。

不幸的是,LiteSpeed 文档在谈到它支持的 Apache 功能时非常模糊,而且即使我在配置文件中键入随机文本,该 Web 服务器似乎也不会吐出错误。

这些都没有完成任何事情(响应通常通过请求的域发送):

RewriteCond %{HTTP_HOST} !=example.com
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} !=example.com
RewriteRule ^ https://example.com/$0 [R=301,L]

可以用这个模块或任何其他模块来完成吗?

.htaccess litespeed
1个回答
0
投票

这两条规则在 Apache 和 LiteSpeed 中都运行良好。

我遇到的问题是,L

指令的
last
(或RewriteRule
)标志
在LiteSpeed中具有不同的行为,并且我有一个之前在问题中没有提到的规则集,因为我认为这不相关。

这在文档本身中没有直接解释,但在 wiki 中,有一篇专门的文章 - 重写规则 [L] Flag:

  • 在大多数情况下,包括 LiteSpeed Web Server,这意味着如果规则匹配,则不会处理更多规则。 LSWS 完全退出重写以避免循环。
  • 在 Apache 中,[L] 表示如果规则匹配,则当前迭代中不会处理更多规则。 Apache 并没有完全退出重写规则,因此存在循环的可能性。

用简单的英语来说,这意味着一旦命中带有

L
标志的匹配规则,LiteSpeed 就会完全停止处理 mod_rewrite 规则,而不是复制原始 Apache 的行为,即重新启动与先前处理结果的规则匹配。

LiteSpeed 在这里更直观,但是,由于它应该模仿 Apache,所以你不会想到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.