tlovett1 / safe-redirect-manager
安全管理您网站的HTTP重定向。
Requires (Dev)
- 10up/phpcs-composer: dev-master
- yoast/phpunit-polyfills: ^1.0.3
README
一个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的维护者、贡献者和使用的库的列表。