当前位置: 首页 > 知识库问答 >
问题:

htaccess重写301重定向规则不带www

呼延沈义
2023-03-14

我有一个客户在他们的网站上有一个重写规则,使用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错误转到https://mywebsite.com用301

共有2个答案

田仲卿
2023-03-14

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

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开头的请求。

此行重写规则^https://www.%{HTTP\u HOST}%{REQUEST\u URI}[L,R=301]是强制满足之前的条件,这是唯一没有www的请求,并将其前置到httpswwww中,这就是您面临该问题的原因。

新规则:

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

这些通常会匹配此RewriteCond%{SERVER_PORT}80http请求,并强制它们进入https而不使用www

但这不会强制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,这是临时的。

祖奇
2023-03-14

我的工程师找到了一个解决方案,所以我把它贴在这里。

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://mywebsite.com/$1 [R,L]
ErrorDocument 404 http://mywebsite.com
 类似资料:
  • 问题内容: 重新设计网站后,我需要重定向几个页面。一切都在同一个域中,只有几件事已被重组和/或重命名。它们的形式为: /contact.php 就是现在: /contact-us.php 使用.htaccess文件,我添加了这一行,这是我最推荐的行: 这通常很好-它可以完成工作-问题是,它还可以重定向: /team1/contact.php /non-existant-folder/contact

  • 嘿,在StackOverflow社区,我在StackOverflow上搜索了很多,以修复我的“太多重定向”错误。但找不到任何有用的东西。我想通过.htaccess和UserAgent条件重定向到移动目录。找到了一个高票数的解决方案,如下所示:

  • 我想知道301和307重定向之间的区别。 我希望通过自制url重定向器生成反向链接,我希望任何“链接果汁”或“页面排名果汁”都能直接从原始主页流向最终url,但如果其中一个原始主页出现问题,我希望能够通过删除该特定页面的重定向链接来关闭该链接。有道理? 我的理解是,301是永久性的,这意味着谷歌将看到301并更新其缓存的URL作为最终目的地,而不管我以后是否取消重定向。 如果我使用307,它将不会

  • 我已经安装了WordPress在example.com.我还安装了CodeIgniter在文件夹这里,是文件夹名称,是控制器名称和CI的工作URL是。我的基本URL以https://开头。 现在我有一个WordPressURL,是我在WordPress admin中创建的页面,工作正常。 我想像一样运行我的CI路径,我想我们可以用一些重写规则来做,这样我的网址看起来就像。我已经添加了给定的为wor

  • 有人能帮我重定向/重写url吗? 例如。com/url/*-- 我在VHost文件中尝试了重定向匹配或重新写入规则。。。 重定向匹配^/url/(.*)$ http://newdomain.com/new/path/url/url/1美元 重定向匹配 ^/(.*)$ http://newdomain.com/new/path/go/1美元 重写引擎在重写康德%{HTTP_HOST}^example

  • 我想要我的。htaccess文件,如果任何作为子域条目的通配符出现在浏览器上,则重定向到某个页面。i、 我想要 山姆,xyz。通用域名格式 重定向到 山姆,xyz。com/view。php?id=sam 我使用以下重写规则重定向。 重新启动引擎 重写cond%{HTTP_HOST}^www.xyz。com[NC] 重写cond%{HTTP_HOST}^([^.])。xyz。通用域名格式 重写 ^(