我有一个多网站的子页面应该从非www重定向到www。
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^/?$ "https\:\/\/www.example\.com" [R=301,L]
如果你输入https://example.com
,上面的代码就可以工作,然后你会被转到https://www.example.com
。但是如果你直接进入https://example.com/about
这样的子页面,你就不会被重定向到https://www.example.com/about
。
如何编写重定向来修复此问题?
我已经尝试了不同的重定向,但我不能让他们工作。
1条答案
按热度按时间hi3rlvi21#
好吧,如果你的规则明确地只匹配请求到根路径(
/
),你的模式^/?$
。该模式显然只匹配一个空字符串或一个字符串中有一个斜杠,没有其他。因此,您需要更改此设置,以便将规则应用于 * 所有 * 请求,并在重写步骤中保留所请求的路径:
下面是一个你经常看到的替代方法。在你想把所有的请求都重写成你的域的“www”变体的特定情况下,它并没有真正的意义。但是如果你需要区分不同的请求用于特定的目的(比如对API的请求和对UI的请求),它可能会允许更大的灵活性: