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]
确保在清除浏览器缓存后对其进行测试。
我在 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]
确保在清除浏览器缓存后对其进行测试。