如何创建 .htaccess 重定向

每当您移动内容、更改域名或只是调整页面 URL 时,您都可能会使用重定向。这可以确保您的用户(和 Google)访问正确的页面,并保留反向链接的 SEO 价值。

您可以专门使用 .htaccess 重定向来执行此操作。

但我知道弄乱网站的服务器文件听起来很令人畏惧。

因此本指南的目标是使 .htaccess 重定向尽可能易于访问。

 

为了提供帮助,您可以在这篇文章中找到两个免费资源:

  1. 一个简单的电子表格 ,可以自动生成最常见场景的规则
  2. .htaccess 重定向速查表 ,解释了重定向规则中使用的所有符号和标志

我会在下文解释何时使用这些工具。如果您愿意,可以立即下载并参考相关资源。

计划如下:

  • 我们将首先引导您找到您的 .htaccess 文件并准备进行更改(如果您已准备好,请跳过此部分)
  • 然后,我们将详细介绍最常见的 .htaccess 重定向用例
  • 然后,我们将介绍可用于构建自定义 .htaccess 规则的符号和标志的备忘单
  • 最后,我们将向您展示如何确保一切正常运行以及如何查明问题

听起来不错吧?走吧。

如何设置.htaccess 重定向

在创建重定向之前,您需要访问 .htaccess 文件。该文件位于您的服务器上,控制着您网站行为的各个方面。

它看起来像这样(特别是对于 WordPress 网站):

 
如何创建 .htaccess 重定向

注意: 只有当您的网站在 Apache 网络服务器上运行时,才会有 .htaccess 文件。如果您不确定您的网站是否在 Apache 服务器上运行,请联系您的开发者。

访问和编辑 .htaccess 文件主要有两种方法:

  • 通过托管服务提供商的控制面板
  • 通过 FTP 客户端

如果你是初学者,或者只是想尽量减少技术层面的内容,我个人推荐第一种选择。

这并不是说使用 FTP 客户端很难(或者每个托管平台都很容易上手)。但通常来说,你的文件管理器会更直观一些。

重要提示: 无论使用哪种方法,在编辑 .htaccess 文件之前务必先备份。一个小错误就可能导致整个网站瘫痪。

通过主机控制面板编辑 .htaccess

大多数主要托管服务提供商在其控制面板中提供文件管理器,可让您直接编辑文件。

总体工作流程大致如下,不过不同主机之间的具体细节可能有所不同:

  1. 登录您的托管账户
  2. 找到文件管理器(通常在 cPanel 或类似的仪表板中)
  3. 导航到您的网站的根目录(通常称为 public_html)
  4. 查找 .htaccess 文件

注意: 您的 .htaccess 文件可能默认处于隐藏状态。如果您没有看到该文件,请在文件管理器设置中查找“显示隐藏文件”选项。

一旦找到它,通常可以右键单击并选择“编辑”进行更改。

举例来说,cPanel 平台的界面如下。首先,我导航到我的域名网站仪表板,找到文件管理器:

 
如何创建 .htaccess 重定向

在那里我可以看到 public_html:

 
如何创建 .htaccess 重定向

然后单击我的 .htaccess 文件:

 
如何创建 .htaccess 重定向

简单的。

通过 FTP

您也可以使用 FTP 客户端,例如 FileZilla 、 Cyber​​duck 或 WinSCP 。它们提供类似的访问权限,但您可以直接访问,而无需通过托管服务提供商。

首先,下载并安装 FTP 客户端。下面我们将以 Cyber​​duck 为例进行说明。

然后使用您的 FTP 凭据连接到您的服务器(您的主机可以提供这些凭据 – 我的凭据位于文件 > FTP 帐户下):

 
如何创建 .htaccess 重定向

然后,在 FTP 客户端内,导航到您站点的根目录。

它可能名为 public_html,可能会自动打开。然后,找到并下载你的 .htaccess 文件:

 
如何创建 .htaccess 重定向

注意: 我必须先在 “查看”> 中显示隐藏文件才能查看我的文件。无论您使用哪个 FTP 客户端,很可能都需要执行同样的操作。

在文本编辑器中进行更改,然后将修改后的文件上传回服务器。根据您使用的工具,您或许可以跳过下载/上传步骤,直接进行编辑:

 
如何创建 .htaccess 重定向

那么 WordPress 怎么样?

如果您正在运行 WordPress 网站,通常不需要编辑 .htaccess 文件来设置重定向。

相反,您可以使用专用的重定向插件,如重定向或 301 重定向 

 
如何创建 .htaccess 重定向

如果您不习惯编辑服务器文件,或者只需要快速设置几个重定向,这些插件非常适合。但对于更复杂的重定向或执行完整的网站迁移,它们的作用不大。

其他 SEO 插件(例如 Rank Math )提供重定向管理器以及在 WordPress 仪表板中编辑 .htaccess 文件的选项:

 
如何创建 .htaccess 重定向

直接在 .htaccess 文件中添加重定向(或者通过 Rank Math 等插件间接添加)通常会提高性能,因为它省去了中间环节(插件)。而且,一旦你掌握了操作方法,其实也没什么技术含量。

(从性能角度来看,它并不总是最好的选择。但通常它会更快。)

Shopify 和 Wix 等其他平台不允许您直接访问 .htaccess 文件。在这种情况下,您需要使用平台内置的重定向工具。

如果您的网站在 WordPress.com 上运行,而不是在 WordPress.org 安装的外部托管上运行,那么对于 WordPress 网站所有者来说,情况可能也是如此。

开始之前:重要的先决条件

在开始更改 .htaccess 文件之前,请记住以下几点:

  • 您需要有一个 .htaccess 文件: 如果您还没有 .htaccess 文件,您可以在 public_html 文件夹中创建一个(WordPress 通常会自动为您创建一个)。
  • 很容易犯错: 在不了解具体操作的情况下更改 .htaccess 文件可能会对您的网站造成严重后果。最好在实施 .htaccess 重定向之前咨询您的开发人员,并尽可能在临时网站上进行任何重大更改,以确保其正常运行。
  • 以下规则仅供参考: 我提供了大量重定向规则示例,并解释了它们的作用。但您可能需要修改这些规则,以确保它们在您的网站上正常运行。
  • 启用 mod_rewrite: 大多数现代主机环境默认启用 mod_rewrite 模块(这是您需要的,因此可能无需担心)。如果您的重定向无法正常工作,请联系您的主机提供商,确认是否是这个问题。
  • 启用选项 + FollowSymLinks: 您可能需要在 .htaccess 文件中启用此功能(通常无需担心)。如果您不确定,请联系您的主机提供商。

现在您已经知道如何实际进入和编辑 .htaccess 文件,让我们看看如何创建不同类型的重定向。

免费资源: 使用我们便捷的 .htaccess 重定向速查表, 让您的生活更加轻松。只需添加您的域名或网址,即可自动生成规则,您可以将其复制并粘贴到您的 .htaccess 文件中。

如何重定向单个 URL

将一个 URL 重定向到另一个 URL 可能是您最常创建的重定向。它非常适合以下情况:

  • 更改了页面的 URL 结构
  • 将两个页面合并为一个
  • 将特定内容移至新位置
 
如何创建 .htaccess 重定向

这种重定向很简单,只需要在 .htaccess 文件中添加一行代码。

注意: 与我将在下面讨论的所有重定向一样,您需要确保新页面是有效的 URL。否则,用户或搜索引擎将遇到 404 错误,因为它是无效链接 。.htaccess 虽然功能强大, 但它并不会自动为您创建新页面 

以下是您需要添加到 .htaccess 文件的代码(将 URL 路径和域替换为您自己的):

Redirect 301 /old-page https://yoursite.com/new-page

让我们来分析一下这意味着什么:

  • 重定向: 告诉服务器你想要创建重定向
  • 301: 指定永久重定向(下面有更多介绍)
  • /old-page: 原始页面的路径(相对于您的根目录)
  • https://yoursite.com/new-page: 目标页面的完整 URL

重要提示: 对于第一部分(旧页面),您只需要路径,无需填写域名。对于第二部分(新页面),您需要完整的 URL, 包括 https:// 和您的域名 

单个 URL 重定向示例

假设您有一个关于狗训练的页面:

https://yourpetsite.com/5-great-tips-for-training-dogs/

并将其移至:

https://yourpetsite.com/dog-training-tips/

您的重定向代码将如下所示:

Redirect 301 /5-great-tips-for-training-dogs/ https://yourpetsite.com/dog-training-tips/

注意: 无论您使用哪种类型的 .htaccess 重定向,请确保您网站的网址结构保持一致。具体来说,如果您的网址末尾包含一个斜杠(例如 /page-1/),请确保将其添加到重定向规则中。

永久重定向与临时重定向

上面示例中的 301 表示永久重定向。这告诉搜索引擎使用新的 URL 更新其索引,并将 SEO 价值从旧页面转移到新页面。

如果您只是暂时重定向(例如维护或季节性促销),请改用 302:

Redirect 302 /sale https://yoursite.com/spring-sale

如果您想保持 SEO 排名(以及网站的权威性 ), 请务必使用 301 重定向进行永久性 URL 更改 。搜索引擎将 301 重定向视为永久性 URL,而将 302 重定向视为临时 URL,这会影响它们转移链接权益的方式。

 
如何创建 .htaccess 重定向

如何重定向子文件夹

有时您需要重定向网站的整个部分,而不仅仅是单个页面。这种情况很常见,例如:

  • 重新组织您的网站结构
  • 将博客或产品类别移动到新位置
  • 整合多个部分的内容

重定向子文件夹会自动处理该文件夹内的所有页面。因此,您无需为每个页面单独设置重定向规则。

以下是要添加到 .htaccess 文件的代码:

RewriteEngine On
RewriteRule ^old-folder/(.*)$ /new-folder/$1 [R=301,L]

让我们分解一下关键部分:

  • RewriteEngine On: 激活 Apache 的重写模块(此类重定向所需*)
  • ^old-folder/: 匹配以旧文件夹开头的 URL 的开头
  • (.*)$: 捕获文件夹名称后的所有内容
  • /new-folder/$1: 将访问者发送到新文件夹,保留其余 URL 路径
  • [R=301,L]: 指定永久重定向,并告诉服务器在匹配后停止处理规则

您不需要知道这是什么意思。但对于某些 .htaccess 重定向规则来说,这行代码非常重要。您只需添加一次(除非您在文件中的某个规则之前也添加了“RewriteEngine Off”)。

子文件夹重定向示例

假设您有一个博客:

https://yoursite.com/blog/post-name

您想将其移动到:

https://yoursite.com/articles/post-name

您的重定向代码将如下所示:

RewriteEngine On
RewriteRule ^blog/(.*)$ /articles/$1  [R=301,L ]

这将重定向:

  • /blog/first-post 到 /articles/first-post
  • /blog/category/tech 到 /articles/category/tech
  • 任何其他以 /blog/ 开头到相关 /articles/ 路径的路径

重要提示:顺序很重要

.htaccess 规则的顺序很重要。如果您只是重定向单个 URL,那么这不会成为问题。

但是如果您想将子文件夹的某些部分重定向到一个地方,而将其他部分重定向到其他地方,则需要小心。

让我们看一个例子来更清楚地说明这一点:

假设你有一个博客子文件夹,其中包含一个特殊的 /featured/ 版块。你想将 /blog/ 目录下的内容重定向到 /articles/ 子文件夹,但推荐文章应该放在 /featured-content/ 目录下。

这是错误的顺序:

RewriteEngine On
RewriteRule ^blog/(.*)$ /articles/$1 [R=301,L]
RewriteRule ^blog/featured/(.*)$ /featured-content/$1 [R=301,L]

为什么这是不正确的?

因为任何时候用户(或 Google)请求您网站上的 URL(例如,您的 site.com/blog/featured/your-post/),Apache 都会首先检查它是否与 /blog/ 结构匹配。

在本例中,确实如此。因此它会重定向:

yoursite.com/blog/featured/your-post/

到:

yoursite.com/articles/your-post/

该 URL 不再符合 /blog/featured/ 结构,因此第二条规则将不再适用。这意味着所有精选文章都会重定向到新的 /articles/ 子文件夹。

正确的顺序如下:

RewriteEngine On
RewriteRule ^blog/featured/(.*)$ /featured-content/$1 [R=301,L] 
RewriteRule ^blog/(.*)$ /articles/$1 [R=301,L]

它会首先检查 /blog/featured/ 结构,并将其重定向到新的 /featured-content/。因此,您的帖子位于:

yoursite.com/blog/featured/your-post/

将重定向至:

yoursite.com/featured-content/your-post/

在这种情况下,它不再匹配 /blog/ 结构,因此第二条规则不再适用。而这正是我们想要的。

对于任何非特色博客 URL,例如 yoursite.com/blog/post-2/ ,它们会根据第二条规则重定向到 yoursite.com/articles/post-2/ (因为如果没有 URL 的 /featured/ 部分,第一条规则就不适用于它们)。

将子文件夹重定向到不同的域

在我向您展示如何将整个网站重定向到新域名之前,值得注意的是,您还可以将子文件夹重定向到完全不同的域名。如果您已将网站的某个部分迁移到新网站,这将非常有用。

以下是使用的规则:

RewriteEngine On
RewriteRule ^old-folder/(.*)$ https://newdomain.com/folder/$1 [R=301,L]

例如,如果您将支持部分移动到专门的支持站点,则可以使用它:

RewriteEngine On
RewriteRule ^support/(.*)$ https://support.yourcompany.com/$1 [R=301,L]

如何重定向到新域名

迁移到新域名是至关重要的一步。无论您是进行品牌重塑、从 .org 域名迁移到 .com 域名,还是整合多个网站,您都需要确保访问者(以及搜索引擎)能够找到您的新网站。

全域重定向可确保访问您旧域名的任何人自动跳转到您的新域名。这既能保留用户体验,又能保留您通过反向链接建立的权威性。

以下是添加到旧域名上的 .htaccess 文件的代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?olddomain.com$ [NC]
RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301]

让我们分析一下它的作用:

  • RewriteEngine On: 激活重写模块
  • RewriteCond %{HTTP_HOST} ^(www.)?olddomain.com$ [NC] :检查是否有人尝试访问您的旧域名,其中:
    • ^(www.)?: 匹配您网站的 www 版本和非 www 版本
    • [NC]: 使匹配不区分大小写(因此 OLDDOMAIN.com 也会匹配)
  • RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301] :设置到新域的永久重定向,其中:
    • ^(.*)$: 捕获域名后的整个 URL 路径
    • https://newdomain.com/$1: 重定向到新域名上的相同路径
    • [L,R=301]: 使其成为永久重定向,并停止处理该请求的其他规则

请记住: 如果您的 .htaccess 文件的其他位置已经有 RewriteEngine On (并且您还没有 RewriteEngine Off ),则无需再次添加它。

域名重定向示例

假设您要从以下位置更改:

https://pettraining.com/dog-care/grooming

到:

https://pawacademy.com/dog-care/grooming

重定向将自动保持相同的路径结构。这意味着,访问您旧域名上任何页面的访客都将跳转到新域名上的相应页面。(您显然需要在新域名上拥有相应的 URL。)

重要提示: 您需要将此 .htaccess 规则放在旧域的服务器上,而不是新域的服务器上。

域名迁移需要精心规划。但如果您操作得当,域名迁移可以转移大部分 SEO 价值,并确保您的受众能够找到您的新网站。想要了解更多关于如何正确迁移的信息,请查看我们的网站迁移清单 

在新域名上将 www 重定向到非 www(或反之亦然)

如果您在域迁移期间也从 www 更改为非 www(或反之亦然),则可以组合使用以下重定向:

RewriteEngine On
# First redirect old domain to new domain
RewriteCond %{HTTP_HOST} ^(www.)?olddomain.com$ [NC]
RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301]
# Then handle www to non-www on new domain
RewriteCond %{HTTP_HOST} ^www.newdomain.com$ [NC]
RewriteRule ^(.*)$ https://newdomain.com/$1 [L,R=301]

如何将 HTTP 重定向到 HTTPS

从 HTTP 重定向到 HTTPS 不仅是一种良好做法,而且实际上是强制性的。HTTPS 加密了访问者和您网站之间的连接。这不仅保护了敏感信息,而且对 Google 排名的影响也较小。

(我并不是建议您重定向到 HTTPS 来提高排名。这实际上只是当今的默认最佳实践。)

 
如何创建 .htaccess 重定向

如果您已经安装了 SSL 证书,但访问者仍然可以通过未加密的 HTTP 访问您的网站,则您需要设置重定向以确保每个人都能获得安全版本。

以下是要添加到 .htaccess 文件的代码:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

每个部分的作用如下:

  • RewriteEngine On: 激活重写模块
  • RewriteCond %{HTTPS} off: 检查连接当前是否未使用 HTTPS
  • ^(.*)$: 捕获整个 URL 路径
  • https://%{HTTP_HOST}%{REQUEST_URI}: 重定向到相同的 URL,但使用 https:// 而不是 http://
  • [L,R=301]: 使其成为永久重定向并停止处理其他规则

此重定向将改变:

http://yourwebsite.com/products/item

到:

https://yourwebsite.com/products/item

重定向保留了整个 URL 结构 — 只有协议从 HTTP 更改为 HTTPS。

与其他重定向不同,您无需使用域名自定义此代码。%{HTTP_HOST} 变量会自动使用访问者尝试访问的域名。

换句话说:您可以直接复制并粘贴它。

但:

在添加此重定向之前,请确保:

  • 您的服务器上安装了有效的 SSL 证书
  • 所有网站资源(图像、脚本等)均可通过 HTTPS 访问
  • 通过 HTTPS 访问时您的网站正常运行
  • 如果您将所有子域名重定向到 HTTPS,则您的 SSL 证书将覆盖所有子域名

最重要的是: 确保您还没有强制使用 HTTPS 的方法 ,因为这可能会导致重定向循环和其他潜在的性能问题。

虽然 .htaccess 是实现 HTTPS 重定向的一种方法,但您可能还有其他选择(也许已经为您执行了此操作):

  • 托管控制面板: 许多托管服务提供商通过其控制面板提供一键式 HTTPS 强制执行功能(甚至可能默认执行)
  • WordPress 设置: 如果您使用的是 WordPress,请检查“设置 > 常规”下的“WordPress 地址”和“站点地址”设置(均应以 https:// 开头)
  • 插件解决方案: WordPress 插件(例如 Really Simple SSL)可以为您处理重定向

如何将 WWW 重定向到非 WWW

您的网站应该是 www.yoursite.com 还是仅仅是 yoursite.com ?这个看似很小的细节实际上对于一致性、用户体验和 SEO 至关重要。

同时访问两个版本可能会造成内容重复的问题 。因此,您应该选择一种格式,并将另一种格式重定向到该格式。

大多数情况下,这两种格式都没有明显的技术优势。

但非 WWW 更短、更清晰,在对话中更容易说。

大多数现代网站倾向于使用非 www 版本,但只要保持一致,无论选择哪种版本都可以。

让我们看看如何将 www 版本重定向到非 www 版本(然后,如果您更喜欢 www,我将向您展示如何反转此操作)。

以下是要添加到 .htaccess 文件的代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]

分解如下:

  • RewriteEngine On: 激活重写模块
  • RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]: 检查 URL 是否以“www”开头,其中:
    • (.*)$: 捕获不带 www 的域名
    • ^(.*)$: 捕获域名后的整个路径
  • https://%1/$1: 重定向到不带 www 的相同 URL,其中:
    • %1: 指的是 RewriteCond 中捕获的域
    • $1: 指页面路径
  • [L,R=301]: 使其成为永久重定向并停止处理其他规则

此重定向将改变:

https://www.yourbusiness.com/about-us

到:

https://yourbusiness.com/about-us

非 WWW 到 WWW 怎么样?

如果您更喜欢 www 版本,只需反转逻辑(您还需要一个额外的 RewriteCond 行):

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

这将检查 URL 是否不以 www 开头,然后添加它。

这是另一条您可以直接复制粘贴到 .htaccess 文件中的规则。但与 HTTP 重定向一样,您需要确保尚未通过其他方法进行重定向。否则,您可能会遇到重定向循环和其他问题。

在您的 .htaccess 文件之外,您可以通过以下方式强制使用 www/non-www:

  • DNS 设置: 某些 DNS 提供商允许您在配置域时设置首选版本
  • 主机控制面板: 许多主机提供强制使用 www 或非 www 的设置
  • WordPress 设置: 在 WordPress 中,检查“设置 > 常规”下的“WordPress 地址”和“站点地址”字段(均应使用您喜欢的格式)

确保测试域名的所有版本,以确保它们都指向您首选的版本:

  • http://yoursite.com
  • http://www.yoursite.com
  • https://yoursite.com
  • https://www.yoursite.com

所有四个最终都应该到达同一个地方(如果您使用非 www,则理想情况下是 https://yoursite.com,如果您更喜欢 www,则理想情况下是 https://www.yoursite.com)。

其他类型的 .htaccess 重定向

虽然上面涵盖了最常见的 .htaccess 重定向场景,但该文件功能极其多样,可以处理许多其他专门的重定向情况。

让我们探索一些可能对特定用例有用的其他重定向类型。

注意: 与任何 .htaccess 规则一样,此处很容易出现小错误,但这些错误可能会造成严重后果,您可能需要根据自己的具体情况修改以下示例。因此,请尽可能咨询您的开发人员。

根据查询参数重定向

有时您需要根据 URL 中问号后面的内容进行重定向。这些内容称为 URL 参数 ,它们对于跟踪和组织网站内容非常有用。

以下是用于管理 URL 参数(也称为查询字符串)的示例 .htaccess 重定向规则:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^product=widget$
RewriteRule ^products.php$ /widgets/? [L,R=301]

这会将 /products.php?product=widget 重定向到 /widgets/,同时删除查询字符串。

目标 URL 末尾的问号告诉服务器剥离原始查询参数而不是传递它们。

重定向到特定端口

如果您需要重定向到不同的端口(例如开发环境),请使用此规则:

RewriteEngine On
RewriteRule ^dev/(.*)$ http://localhost:8080/$1 [L,R=301]

这会将 /dev/page 的请求重定向到 http://localhost:8080/page。

自定义错误页面重定向

您可以为各种 HTTP 错误代码设置自定义页面。

例如,您可以将用户和搜索引擎发送到专用的错误页面:

ErrorDocument 404 /custom-404
ErrorDocument 500 /server-error

虽然从技术上讲这些不是重定向(它们是错误处理程序),但它们有助于在出现问题时提供更好的用户体验。

临时重定向与永久重定向

我们主要介绍了 301(永久)重定向,但 302(临时)重定向可用于:

  • 维护页面
  • 季节性促销
  • A/B 测试

要创建临时重定向,只需将 301 更改为 302:

Redirect 302 /sale /summer-sale

当使用临时重定向进行维护时,您可以创建一条排除您的 IP 地址的规则,以便您仍然可以访问原始页面:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^123.456.789.0
RewriteRule ^(.*)$ /maintenance [R=302,L]

其中 123.456.789.0 是您的 IP 地址。

重定向特定文件类型

您还可以重定向特定文件类型(例如 PDF)的请求:

RewriteEngine On
RewriteRule ^(.*).pdf$ /documents/$1.pdf [L,R=301]

这会将所有 PDF 文件移动到 /documents/ 文件夹。

重定向至强制尾部斜杠

为了保持一致性,您可能希望所有 URL 都带有或不带有尾部斜杠:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^])$ /$1/ [L,R=301]

这会为所有不代表实际文件的 URL 添加一个尾部斜杠。

Htaccess 重定向符号解释(+ 备忘单)

.htaccess 重定向中的符号乍一看可能有些难以理解。这些插入符号、美元符号和括号虽然意义重大,但作用却并不明显。

您无需尝试了解它们的作用,下面是一个方便的参考,您可以在需要创建或修改重定向时返回查看。

常见的 .htaccess 符号

象征姓名它的作用例子
^插入符号匹配字符串的开头^blog 匹配以“blog”开头的 URL
$美元符号匹配字符串的结尾.html$ 匹配以“.html”结尾的 URL
()括号对模式进行分组并捕获匹配的内容(.*?) 捕获稍后要使用的内容
1美元,2美元……带数字的美元符号引用 RewriteRule 中的捕获组/$1.html 插入第一个捕获组
%1、%2…带数字的百分比在 RewriteCond 中引用捕获组https://%1 使用条件中捕获的域
.时期匹配任意单个字符ac 匹配“abc”、“adc”等。
*星号匹配零个或多个前导字符a* 匹配“”、“a”、“aa”、“aaa”等。
+匹配一个或多个前导字符a+ 匹配“a”、“aa”、“aaa”等(但不匹配“”)
?问号使前面的字符成为可选字符colou?r 同时匹配“color”和“colour”
[方括号包含标志或定义字符集[L,R=301] 设置标志;[az] 匹配小写字母
 反斜杠转义特殊字符. 匹配文字句点而不是任何字符
|管道充当或运算符cat|dog 匹配“cat”或“dog”

标记选项

旗帜姓名目的
L最后的如果此规则匹配,则停止处理规则
R=301重定向(301)创建永久重定向
R=302重定向(302)创建临时重定向
NC无案例使匹配不区分大小写
QSA查询字符串附加从原始 URL 添加查询参数
F禁止返回 403 禁止状态
G已消失返回 410 Gone 状态(资源永久删除)
PT通过将请求传递给其他模块进行进一步处理

RewriteCond 变量

多变的内容
%{HTTP_HOST}请求中的域名(例如 example.com)
%{请求 URI}URL 的路径部分(例如,/folder/page/)
%{QUERY_STRING}URL 中 ? 后面的所有内容
%{REQUEST_FILENAME}请求文件的完整路径
%{HTTP_USER_AGENT}有关访问者浏览器的信息
%{HTTPS}如果连接安全则为“on”,否则为“off”
%{远程地址}访问者的 IP 地址

模式匹配示例

以下是掌握所有符号、标志和变量后可以设置的几种规则的示例:

URL 路径

  • ^about$ 仅匹配精确的 URL“/about”(而不是“/about-us”或“/about/team”)
  • ^about(.*) 匹配“/about”及其后的任何内容(“/about-us”、“/about/team”等)

文件类型

  • .(pdf|docx|xlsx)$ 匹配以 .pdf、.docx 或 .xlsx 结尾的 URL(用于特定文件处理)
  • ^((?!.html).)*$ 匹配任何不以 .html 结尾的 URL(用于处理非 HTML 请求)

旗帜变化

  • RewriteRule ^blog/(.*)$ /articles/$1 [R=301,L] 创建永久 (301) 重定向,浏览器和搜索引擎将缓存
  • RewriteRule ^blog/(.*)$ /articles/$1 [R=302,L] 创建一个临时(302)重定向,该重定向不会被浏览器永久缓存(在站点测试期间很有用)

变量条件

  • RewriteCond %{HTTP_HOST} example.com 专门匹配对 example.com 的请求(区分大小写,不包括 www.example.com)
  • RewriteCond %{REQUEST_URI} ^/blog/articles 匹配路径恰好为“/blog/articles”的 URL(在许多服务器上区分大小写)

专业提示: 创建复杂模式时,请逐步构建并测试每个步骤。调试简单模式比调试复杂模式更容易。

如何检查重定向是否有效

您已经完成了艰苦的工作,现在让我们来了解如何确保您已正确设置一切。

以下是检查重定向的几种方法。最佳方法取决于重定向的性质以及您设置的重定向数量。

手动测试

测试重定向的最简单方法是在浏览器中手动检查它们。

只需输入您重定向的旧 URL 并观察地址栏以查看它是否更改为新 URL。

要更详细地了解正在发生的事情,请使用浏览器的开发人员工具:

  1. 在重定向的页面上打开开发人员工具(大多数浏览器中的 F12,或右键单击,然后选择“ 检查 ”)
  2. 转到“ 网络 ”选项卡
  3. 重新加载页面并查找重定向链和状态代码

在下面的示例中,您可以看到它已从 URL /position 重定向到 /positioning:

 
如何创建 .htaccess 重定向

在线重定向检查器

有几种免费工具可以测试你的重定向并提供更多技术细节。HTTP 状态代码检查器就是一个例子。

这些工具向您显示整个重定向路径、状态代码以及每个重定向需要处理的时间:

 
如何创建 .htaccess 重定向

测试多个 URL

如果您设置了许多重定向(例如子文件夹或域范围的重定向),则手动测试每个 URL 是不切实际的。

HTTP 状态代码检查器工具确实允许您测试多个 URL……

 
如何创建 .htaccess 重定向

但这并不适用于整个站点重定向,或者当您设置了数百(或数千)个重定向时。

您可以使用抓取工具并将抓取结果与您的站点地图进行比较,但这仍然非常繁琐。

相反,考虑使用像 Semrush 的站点审核这样的工具。

只需输入您的域名,运行审核,然后转到“ 问题 ”选项卡。输入“重定向”即可标记相关问题。

 
如何创建 .htaccess 重定向

尤其要注意:

  • # 在 sitemap.xml 中发现不正确的页面: 这将突出显示站点地图中重定向到其他地方的任何页面
  • # 页面存在 WWW 解析问题: 如果您未指定您喜欢的版本(www 或非 www)(例如,通过 .htaccess 重定向),这将突出显示问题
  • 没有从 HTTP 版本重定向到 HTTPS 主页或规范版本: 这将检查您的主页是否设置为提供安全的 HTTPS 版本
  • # 重定向链和循环: 这些会造成糟糕的用户体验,并可能影响你的 SEO
  • # 带有临时重定向的 URL: 仔细检查这些重定向确实是临时的
  • # 具有永久重定向的 URL: 检查这些 URL 是否应该重定向,并确保它们重定向到正确的位置
Backlinko海外大牛热门必读

Schema 标记 101:提升 SEO 和改进搜索

2025-6-29 15:04:35

Backlinko海外大牛热门必读

什么是关键词堆砌?避免 SEO 重蹈覆辙

2025-6-29 15:31:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧