Apache - 请求 uri md5

Apache - 请求 uri md5

是否可以创建当前请求 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_filephp.ini 中的变量中。

相关内容