.htaccess 将子页面重定向到htaccess中的www

jgovgodb  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(220)

我有一个多网站的子页面应该从非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
如何编写重定向来修复此问题?
我已经尝试了不同的重定向,但我不能让他们工作。

hi3rlvi2

hi3rlvi21#

好吧,如果你的规则明确地只匹配请求到根路径(/),你的模式^/?$。该模式显然只匹配一个空字符串或一个字符串中有一个斜杠,没有其他。
因此,您需要更改此设置,以便将规则应用于 * 所有 * 请求,并在重写步骤中保留所请求的路径:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^ https://www.example\.com%{REQUEST_URI} [R=301,L]

下面是一个你经常看到的替代方法。在你想把所有的请求都重写成你的域的“www”变体的特定情况下,它并没有真正的意义。但是如果你需要区分不同的请求用于特定的目的(比如对API的请求和对UI的请求),它可能会允许更大的灵活性:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule ^/?(.*)$ https://www.example\.com/$1 [R=301,L]

相关问题