作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚使用 Zend_Cache_Backend_Static 设置了静态页面缓存,以在我的应用程序中提供缓存的 html 文件,效果很好。我唯一担心的是它使用 $_GET 参数缓存文件的方式。因为它会自动创建一个映射到提供的 URL 路由的文件夹结构,所以在可能故意将大量 $_GET 参数附加到现有页面的情况下,这是否存在潜在的安全风险?达到最大目录深度还是最大文件长度?
例如: 目前我正在将我的页面缓存到 /public/cache/static/
所以使用标准路由器/module/controller/action/param1/val1/param2/val2
或标准查询字符串 /module/controller/action?param1=val1¶m2=val2
将创建以下目录结构:
/public/cache/static/module/controller/action/param1/val1/param2/val2.html
/public/cache/static/module/controller/action?param1=val1¶m2=val2.html
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{DOCUMENT_ROOT}/cached/index.html -f
RewriteRule ^/*$ cached/index.html [L]
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}\.html -f
RewriteRule .* cached/%{REQUEST_URI}\.html [L]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
RewriteCond %{QUERY_STRING} \S
RewriteRule [^\?]+ /$0? [R=301,L]
最佳答案
理想的方法是将其定义为 RewriteCond,但我不确定是否可以使用 mod_rewrite 计算 GET 参数的数量。
因此,最好的解决方案可能是重定向到一个独立的 php 脚本,该脚本决定是否使用缓存的 html 文件。
<?php
if (count($_GET) >= 20) {
require __DIR__ . 'index.php';
} else {
require '/path/to/cache.html';
}
关于zend-framework - 是否可以使用 Zend_Cache_Backend_Static 将静态页面缓存为 HTML 来限制 Zend Framework 应用程序的 $_GET 参数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9326406/
我刚刚使用 Zend_Cache_Backend_Static 设置了静态页面缓存,以在我的应用程序中提供缓存的 html 文件,效果很好。我唯一担心的是它使用 $_GET 参数缓存文件的方式。因为它
我是一名优秀的程序员,十分优秀!