【发布时间】:2022-01-03 22:58:19
【问题描述】:
我的 .htaccess 文件是:
# remove "www"
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
# add trailing slash "/"
RewriteCond %{HTTP_HOST} ^(www\.)?example.com$
RewriteRule ^(.*(?:^|/)[^/\.]+)$ $1/ [R=301,L]
# other rules needed
RewriteCond %{HTTP_HOST} ^(www\.)?example.com$
RewriteRule ^old-link/$ https://example.com/new-link/ [R=301,L]
我的目标是让http://www.example.com/something-after 重定向到https://example.com/something-after 之后我希望在末尾添加“/”:https://example.com/something-after/
但是,我在在线测试仪中对此进行了测试,它说“测试已停止,使用不同的主机将导致重定向”在第一条规则上,因此第二条永远不会满足规则。
【问题讨论】:
-
您是在这个帐户上托管多个域和/或子域,还是
example.com和www.example.com是仅有的两个主机名? -
确实,重定向到另一台主机后重写过程终止。 BUT 对于浏览器发送到 那个 主机的请求,另一个重写过程开始 ...
-
@MrWhite,是的,这里的问题是我有多个域。如果我不这样做,也许我可以编写其他类型的规则
-
@arkascha 非常感谢。我想我理解了,也许我看到了一个不存在的问题
-
好的,这不是问题...如果您没有多个域,则可以稍微简化规则,因为
RewriteCond指令检查Host标头(在两个的规则)将是不必要的。
标签: .htaccess mod-rewrite