在 HTML 中设置 301 跳转(不推荐,有局限性)
<!DOCTYPE html>
<html>
<head>
<meta http - equiv="refresh" content="0; url=https://new-url.com">
<title>Page is Moving</title>
</head>
<body>
<p>This page has moved to <a href="https://new-url.com">a new location</a>.</p>
</body>
</html>
解释:
<meta http - equiv="refresh"
:http - equiv
属性用于把content
属性关联到 HTTP 头部。在这里,它表示这是一个类似于 HTTP 头部指令的操作。
content="0; url=https://new-url.com"
:content
属性的值有两部分。0
表示页面在加载后立即(0 秒后)进行跳转,url=https://new-url.com
是要跳转到的目标网址。这种方式实际上是一种页面刷新并跳转的操作,不是真正意义上的 301 状态码跳转。
在服务器端设置 301 跳转(推荐)
Redirect 301 /old - page.html https://new - url.com/new - page.html
解释:
Redirect 301
:这是 Apache 服务器的重定向指令,301
表示这是一个永久重定向。
/old - page.html
:是要重定向的源页面路径,可以是具体的 HTML 文件、目录等。
https://new - url.com/new - page.html
:是目标页面的完整 URL,即用户访问源页面时将被重定向到的新页面。
对于整个目录的重定向,可以使用以下代码:
RedirectMatch 301 ^/old - directory/(.*)$ https://new - url.com/new - directory/$1
解释:
RedirectMatch 301
:和Redirect 301
类似,但RedirectMatch
允许使用正则表达式来匹配要重定向的源路径。
^/old - directory/(.*)$
:这是一个正则表达式。^
表示匹配字符串的开头,/old - directory/
是要匹配的目录路径,(.*)
表示匹配目录下的任意内容(包括子目录和文件),$
表示匹配字符串的结尾。
https://new - url.com/new - directory/$1
:$1
是一个反向引用,它引用了前面正则表达式中(.*)
匹配到的内容,这样可以将旧目录下的文件和子目录结构正确地重定向到新目录下的相应位置。
Nginx 服务器
server {
listen 80;
server_name old - domain.com;
return 301 https://new - domain.com$request_uri;
}
使用编程语言设置 301 跳转(如在 PHP 中)
解释:
header("HTTP/1.1 301 Moved Permanently")
:这行代码发送一个 HTTP 头部信息,告诉浏览器这是一个 301 永久重定向。
header("Location: https://new - url.com")
:指定了重定向的目标 URL。
exit()
:结束脚本的执行,确保在发送头部信息后没有其他多余的输出,因为头部信息必须在任何页面内容输出之前发送。
在设置 301 跳转后,要注意对旧链接进行测试,确保搜索引擎能够正确地索引新链接,并且用户访问旧链接时能够顺利地跳转到新链接。同时,根据网站的规模和结构,合理选择设置 301 跳转的方式。