【问题标题】:htaccess rewrite 301 redirect rule without wwwhtaccess 在没有 www 的情况下重写 301 重定向规则
【发布时间】:2019-03-20 03:22:35
【问题描述】:

我有一个客户在他们的网站上有一个重写规则,该规则使用 404 和 SSL 与 https: 但它总是重写为 'www.mywebsite.com' 。他们想要没有 www。每当我尝试修改规则时,代码都会因“重定向过多”而中断

这是旧的 .htaccess 规则

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

ErrorDocument 404 http://www.mywebsite.com

我尝试删除上面的“www”,但是当我这样做时,您会收到一个错误 - 无休止的重定向。

目标是一个简单的重写规则,允许所有重定向和 404 错误以 301 转到 https://mywebsite.com

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    我的工程师找到了解决方案,所以我将其发布在这里。

    RewriteEngine On 
    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^(.*)$ https://mywebsite.com/$1 [R,L]
    ErrorDocument 404 http://mywebsite.com
    

    【讨论】:

    • 这真的有效吗?这也会导致无休止的重定向。如果有人直接访问https://mywebsite.com/,那么这将继续重定向并以我认为的无限循环结束。
    • 为什么ErrorDocument 中有http 而不是https
    【解决方案2】:

    让我解释一下以前的规则:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} .
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    ErrorDocument 404 http://www.mywebsite.com
    

    这一行RewriteCond %{HTTP_HOST} . 匹配任何以除换行符以外的任何字符开头的请求。

    RewriteCond %{HTTP_HOST} !^www\. [NC] 这一行匹配任何不以www 开头的请求。

    RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 这一行是为了强制满足之前的条件,即只有没有www 的请求,然后将其转换为https + wwww,这就是你遇到这个问题的原因。

    新规则:

    RewriteEngine On 
    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^(.*)$ https://mywebsite.com/$1 [R,L]
    ErrorDocument 404 http://mywebsite.com
    

    这些通常会匹配此RewriteCond %{SERVER_PORT} 80http 请求,并在没有www 的情况下强制它们进入https

    但这不会将https://www 强制转换为https://,所以将它们更改为:

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^(.*)$ https://mywebsite.com/$1 [R,L]
    ErrorDocument 404 http://mywebsite.com
    

    如果此代码正常,请将 [R,L] 更改为 [R=301,L] 以永久重定向,因为 R 标志单独表示 302 是临时的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-21
      • 2019-02-04
      • 1970-01-01
      • 2010-12-22
      • 2011-01-05
      • 1970-01-01
      相关资源
      最近更新 更多