silverstripe / routewhitelist
为SilverStripe网站提供已知有效URL模式的白名单。
v1.0.1
2016-04-17 23:22 UTC
Requires
- silverstripe/cms: >=3.1
This package is auto-updated.
Last update: 2024-08-23 05:19:02 UTC
README
为SilverStripe网站提供已知有效URL模式的白名单。
概述
此模块采取的观点是,虽然路由是一个难题,但路由问题的一个子集是非常容易解决的。因此,虽然确定一个给定的URL是否无效并应返回404,或者是否有效并应路由到某个控制器,这是一个非常复杂的过程,涉及到多次数据库查询,但确定一个给定的URL肯定无效并且无论如何都不会产生有效的响应要容易得多。此模块正是如此。它检查URL的第一部分,并在非常短的时间内返回404响应,如果该第一部分与任何已知的控制器、路由或顶级页面不匹配。
需求
路由白名单依赖于Apache的htaccess系统来比较URL的第一部分。目前不支持Nginx。
路由白名单也仅与域名路由下的SilverStripe安装一起工作。因此,运行在 "myawesomewebsite.com" 的网站和 "localhost:81" 的网站可以正常工作,但 "localhost/myawesomewebsite" 则无法工作。
安装
要安装此模块,请运行
composer require silverstripe/routewhitelist:*
要配置模块,用routewhitelist/extra/htaccess中的文件替换标准的SilverStripe .htaccess文件。您可以通过运行以下命令来完成此操作
cd myawesomewebsite
cp routewhitelist/extra/htaccess .htaccess
然后运行一个 ?flush=all 生成白名单。请放心,模块只有在生成白名单后才会生效。
如果您已修改了标准的SilverStripe .htaccess文件,请将以下片段插入到您的修改文件中适当位置,靠近mod_rewrite规则的上部
#routewhitelist: send known invalid URLs straight to the 404 error page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/routewhitelistcache/.htaccess -f
RewriteCond %{REQUEST_URI} ^\/(.+?)(\/.*|\s*)$
RewriteCond %{DOCUMENT_ROOT}/routewhitelistcache/%1 !-f
RewriteRule .* assets/error-404.html [L,R=404]