tlovett1/safe-redirect-manager

此包最新版本(2.2.0)没有可用的许可证信息。

安全管理您网站的HTTP重定向。

安装: 8,613

依赖: 0

建议者: 0

安全性: 0

星星: 312

关注者: 55

分支: 82

类型:wordpress-plugin

2.2.0 2024-09-19 08:40 UTC

README

Safe Redirect Manager

Support Level WordPress tested up to version GPLv2 License Dependency Review WordPress Playground Demo

E2E test PHPUnit Linting PHPCS PHPCompatibility CodeQL

一个WordPress插件,用于安全地管理您网站的HTTP重定向。

目的

按照WordPress的方式安全地管理您网站的重定向。有很多重定向插件可用。其中大多数将重定向存储在选项表中或自定义表中。大多数都提供了大量不必要的选项。其中一些对性能有严重影响(404错误日志)。Safe Redirect Manager将重定向作为自定义帖子类型存储。这使得您的数据可移植,并且您的网站可扩展。Safe Redirect Manager旨在处理企业级流量,并在主要出版网站上使用。插件只包含您需要的内容,遵循WordPress的口号,决策而不是选项。动作和过滤器使插件非常易于扩展。

安装

在WordPress中安装插件。您可以通过GitHub下载一个zip文件,并使用WordPress插件上传器("插件" > "添加新插件" > "上传插件")上传。

配置

此插件没有总体设置。要管理重定向,请转到管理面板("工具" > "Safe Redirect Manager")。

每个重定向包含一些您可以利用的字段

"重定向自"

这应该是相对于您的WordPress安装根目录的路径。当有人访问与该路径匹配的网站时,将发生重定向。如果您的网站位于http://example.com/wp/,您想将http://example.com/wp/about重定向到http://example.com,则您的"重定向自"将是/about

单击"启用正则表达式"复选框允许您在路径中使用正则表达式。有关正则表达式的许多优秀教程

您还可以在"重定向自"路径中使用通配符。在URL末尾添加一个*,您的重定向将匹配以"重定向自"开头的任何请求。通配符支持替换。这意味着如果您在"重定向自"路径中有一个匹配字符串的通配符,您可以将该字符串替换为"重定向到"路径中的通配符字符。例如,如果您的"重定向自"是/test/*,您的"重定向到"是http://google.com/*,并且请求的路径是/test/string,则用户将被重定向到http://google.com/string

"重定向到"

这应该是一个路径(例如/test)或一个URL(例如http://example.com/wp/test)。如果请求的路径与"重定向自"匹配,它们将被重定向到此。"重定向到"支持通配符和正则表达式替换。

"HTTP状态码"

HTTP状态码是包含有关请求信息(例如是否成功、未经授权、未找到等)的数字。您几乎总是应该使用302(临时移动)或301(永久移动)。

注意

  • 重定向使用Transients API进行缓存。当添加、更新和删除重定向时会发生缓存破坏,因此您不应提供过时的重定向。
  • 默认情况下,该插件只允许最多1000次重定向,以防止性能问题。您可以使用过滤器srm_max_redirects来增加这个数字。
  • 默认情况下,“重定向自”和请求路径不区分大小写。
  • 开发人员可以使用srm_additional_status_codes过滤器在需要时添加状态码。
  • 使用403和410状态码设置的规则将通过应用HTTP状态码并渲染可选消息的默认WordPress wp_die屏幕来处理。
  • 使用404状态码设置的规则将应用状态码并渲染404模板。
  • 浏览器会大量缓存301(永久移动)重定向。在将它们永久更改为301之前,建议使用302(临时移动)状态码测试您的永久重定向。

过滤器

默认重定向状态码

可以使用srm_default_direct_status过滤器更改默认重定向HTTP状态码。

add_filter(
	'srm_default_direct_status',
	/**
	 * Set the default redirect status to 301 (Moved Permanently).
	 */
	function() {
		return 301;
	}
);

重定向循环检测

默认情况下,重定向循环检测是禁用的。为了防止重定向循环,您可以通过过滤器srm_check_for_possible_redirect_loops来防止。

add_filter( 'srm_check_for_possible_redirect_loops', '__return_true' );

只有当发生404时才进行重定向

默认情况下,每个匹配的URL都会进行重定向。要仅重定向匹配但未找到的URL(即,404页面),请使用srm_redirect_only_on_404

add_filter( 'srm_redirect_only_on_404', '__return_true' );

CLI命令

以下WP-CLI命令由Safe Redirect Manager支持

  • wp safe-redirect-manager list

    列出所有当前配置的重定向。

  • wp safe-redirect-manager create <from> <to> [<status-code>] [<enable-regex>] [<post-status>]

    创建一个重定向。<from><to>是必选参数。

    • <from>:重定向自路径。必选。
    • <to>:重定向到路径。必选。
    • <status-code>:HTTP状态码。可选。默认为302
    • <enable-regex>:是否启用正则表达式。可选。默认为false
    • <post-status>:重定向的状态。可选。默认为publish

    示例: wp safe-redirect-manager create /about-us /contact-us 301

  • wp safe-redirect-manager delete <id>

    通过<id>删除一个重定向。

  • wp safe-redirect-manager update-cache

    更新重定向缓存。

  • wp safe-redirect-manager import <file> [--source=<source-column>] [--target=<target-column>] [--regex=<regex-column>] [--code=<code-column>] [--order=<order-column>]

    从CSV文件导入重定向。

    • <file>:导入一个或多个有效CSV文件的路径。此文件应包含重定向自和至URL、正则表达式标志和HTTP重定向代码。以下是示例表格

      您还可以使用“Redirection”插件的导出重定向,您可以在此处下载:/wp-admin/tools.php?page=redirection.php&sub=modules

    • --source:源列(“来自”URL)的标题映射。

    • --target:目标列(“到”URL)的标题映射。

    • --regex:正则表达式列的标题映射。

    • --code:代码列的标题映射。

    • --order:顺序列的标题映射。

  • wp safe-redirect-manager import-htaccess <file>

    导入 .htaccess 文件重定向。

开发

设置

按照上述配置说明设置插件。我们建议在类似WP Local Docker的环境中进行本地插件开发。

测试

在终端中更改到插件文件夹。通过运行以下命令初始化您的单元测试环境:

bash bin/install-wp-tests.sh database username password host version

运行插件测试

phpunit

问题

如果您发现任何错误或对改进插件有想法,请打开一个问题

翻译

安全重定向管理器支持英语和其他语言。这些语言的列表以及将插件翻译成其他语言的说明可以在翻译WordPress上找到。感谢翻译团队的贡献者们!

支持级别

稳定版:10up不打算为此版本开发任何新功能,但仍然会响应错误报告和安全问题。我们欢迎提交PR,但包含新功能的PR应尽量小且易于集成,且不应包含破坏性更改。我们另外打算保持此版本与WordPress最新版本的兼容性。

更新日志

安全重定向管理器所有显著更改的完整列表在CHANGELOG.md中记录。

贡献

请阅读CODE_OF_CONDUCT.md以了解我们的行为准则,CONTRIBUTING.md以了解向我们的提交pull请求的过程,以及CREDITS.md以查看Safe Redirect Manager的维护者、贡献者和使用的库的列表。

喜欢你所看到的吗?