是否可以创建当前请求 uri 的 md5 哈希字符串并将其分配为环境变量,以便我可以从 PHP 读取它?
答案1
我没有测试,但你可以尝试:
RewriteEngine on
RewriteMap md5create prg:/usr/local/sbin/md5create.pl
RewriteRule ^(.*) %{REQUEST_URI} [E=MD5HASH:${md5create:$1}]
md5create.pl 脚本用于创建 md5sum
答案2
使用纯 htaccess 的基本缓存的另一种方法是从反映请求 URI 的缓存中加载,实际上您将文件编译到动态 URL 指示的树结构中。
例如:
Request: http://domain.com/foo/
文件结构:
Top Level: index.php,cache/
[Inside the cache/ directory -->] index.php, foo/
你明白了 - 这就像你正在构建一个静态站点,但是你已将该站点的缓存版本存储在“缓存”文件夹中。
然后你的.htaccess
# Add cache directory to request, store original request
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*)/?$ /cache/$1 [E=orig:$1]
# Does the request exist as a directory in the cache folder?
# Yes -> load the cached page
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ %{REQUEST_FILENAME} [L]
# No -> continue with system rewrite
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/%{ENV:orig} [L]
把它们放在一起以便可以改进,并且依赖于你的缓存目录自动填充为文件结构,但认为它可能会很有用,因为它是纯 htaccess。
您的服务器端脚本需要更新缓存文件结构并执行日常工作。
答案3
您可以使用全局变量来实现这一点$_SERVER["REQUEST_URI"]
,并使用内部 PHPmd5()
函数来生成它。
如果您想每次都执行该操作,只需将 php 代码添加到auto_prepend_file
php.ini 中的变量中。