重写:一个简单而强大的URL重写器
#网络开发人员 #教程 #go #networking

重写是一个GO软件包,可让您根据正则表达式重写URL路径,子域或主机。它的灵感来自Apache的Mod_rewrite模块,可用作net/http的中间件。

重写可以通过将旧或不需要的URL重定向到新的URL,执行主要子域或简化复杂的URL结构来帮助您获得更好的SEO结果。

如何安装重写

要安装重写,您需要在系统上安装。然后,您可以使用Go Get命令下载并安装软件包:

$ go get github.com/kataras/rewrite

如何使用重写

您可以通过两种方式加载重写选项:

  1. 使用New函数和Handler方法通过代码。这样,您可以处理解析错误并以编程方式创建规则。
  2. 或使用返回func(http.Handler) http.HandlerLoad函数通过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

我希望您喜欢这篇文章,并发现它有用。如果您有任何反馈或问题,请随时在下面发表评论。谢谢您的阅读! ð