silverstripe/routewhitelist

为SilverStripe网站提供已知有效URL模式的白名单。

v1.0.1 2016-04-17 23:22 UTC

This package is auto-updated.

Last update: 2024-08-23 05:19:02 UTC


README

Build Status Scrutinizer Code Quality Build Status codecov.io

Latest Stable Version Latest Unstable Version Total Downloads License Monthly Downloads Daily Downloads

Dependency Status Reference Status

为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]