URL 重写没有 www 不工作

URL re-write not working without www

我在 URL 重写时遇到了一些我无法弄清楚的问题。问题来了。

这个 URL 不是 正确重定向:
http://domain.com/index.php?en=oldpage

但是,这个 URL 正确重定向:
http://www.domain.com/index.php?en=oldpage

没有正确重定向的 url 的唯一区别是缺少 www.

这是我正在使用的重写:

RewriteCond %{QUERY_STRING} ^en=oldpage
RewriteRule ^(index.php/|)$ /newpage.html? [R=301,L]

我也有此重写 BEFORE 其他重写,以处理 url 没有 "www.":

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/ [R=301,L]

为什么没有 "www." 就不会重定向?任何帮助将非常感激。谢谢。

我猜这些规则下面有一些 code/rule 将查询字符串添加回您的 URL。

根据 THE_REQUEST 不会被覆盖的变量尝试这些规则:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{THE_REQUEST} \s/+(?:index\.php)?\?en=oldpage [NC]
RewriteRule ^ /newpage.html? [R=301,L]

确保在清除浏览器缓存后对其进行测试。