重写是一个GO软件包,可让您根据正则表达式重写URL路径,子域或主机。它的灵感来自Apache的Mod_rewrite模块,可用作net/http的中间件。
重写可以通过将旧或不需要的URL重定向到新的URL,执行主要子域或简化复杂的URL结构来帮助您获得更好的SEO结果。
如何安装重写
要安装重写,您需要在系统上安装。然后,您可以使用Go Get命令下载并安装软件包:
$ go get github.com/kataras/rewrite
如何使用重写
您可以通过两种方式加载重写选项:
- 使用
New
函数和Handler
方法通过代码。这样,您可以处理解析错误并以编程方式创建规则。 - 或使用返回
func(http.Handler) http.Handler
的Load
函数通过yaml文件。这是最常见和最简单的方法。它对解析错误感到恐慌。
重写规则的语法是:
REDIRECT_CODE_DIGITS PATTERN_REGEX TARGET_REPL
其中:
-
REDIRECT_CODE_DIGITS
是用于重定向的HTTP状态代码,例如301(永久移动)或302(找到)。 -
PATTERN_REGEX
是与请求URL路径,子域或主机的正则表达式。 -
TARGET_REPL
是包含新的URL路径,子域或主机的替换字符串。
例如:
301 /seo/(.*) /$1
此规则使用301 HTTP状态代码将所有请求从相对路径/seo/*
重定向到/*
。
您也可以使用称为PrimarySubdomain
的特殊选项将所有请求从根域重定向到特定子域,例如www
。
例如:
PrimarySubdomain: www
此选项将所有请求从example.com
重定向到www.example.com
。
例子
让我们编写一个遵循以下重定向规则的简单应用程序:
- 将
/seo/*
重定向到/*
- 将
/docs/v12*
重定向到/docs
- 将
/old (.*)
重定向到/
- 将根域请求重定向到
www.
代码看起来像这样:
package main
import (
"net/http"
"github.com/kataras/rewrite"
)
func main() {
mux := http.NewServeMux()
// [...routes]
// Load the redirect rules from a YAML file.
redirects := rewrite.Load("redirects.yml")
// Wrap the router with the rewrite middleware.
http.ListenAndServe(":8080", redirects(mux))
}
yaml文件看起来像这样:
RedirectMatch:
# Redirects /seo/* to /*
- 301 /seo/(.*) /$1
# Redirects /docs/v12* to /docs
- 301 /docs/v12(.*) /docs
# Redirects /old (.*) to /
- 301 /old(.*) /
# Redirects root domain requests to www.
PrimarySubdomain: www
就是这样!现在,您可以测试您的应用程序,并查看其如何根据您的规则重定向。
您可以在GitHub存储库的_examples
文件夹中找到更多示例:https://github.com/kataras/rewrite/tree/main/_examples
结论
重写是一个方便的软件包,可让您轻松地重写URL。它与任何NET/HTTP路由器或框架兼容,并支持灵活匹配和替换的正则表达式。它可以通过将旧或不需要的URL重定向到新的URL,执行主要子域或简化复杂的URL结构来帮助您提高SEO性能。
如果您想了解有关重写的更多信息,则可以查看其github存储库:https://github.com/kataras/rewrite
我希望您喜欢这篇文章,并发现它有用。如果您有任何反馈或问题,请随时在下面发表评论。谢谢您的阅读! ð