Можно ли создать хеш-строку md5 текущего uri запроса и назначить ее как переменную env, чтобы я мог читать ее с PHP?
Я не тестирую, но вы можете попробовать:
RewriteEngine on
RewriteMap md5create prg:/usr/local/sbin/md5create.pl
RewriteRule ^(.*) %{REQUEST_URI} [E=MD5HASH:${md5create:$1}]
md5create.pl скрипт для создания md5sum
Альтернативой базовому кешу, использующему чистый htaccess, является загрузка из кеша, который отражает URI запроса, по сути, вы компилируете свои файлы в структуру дерева, которую указывают ваши динамические URL-адреса.
Например:
Request: http://domain.com/foo/
Файловая структура:
Top Level: index.php,cache/
[Inside the cache/ directory -->] index.php, foo/
Вы уловили идею - это похоже на создание статического сайта, но вы сохранили кешированную версию сайта в папке «cache».
Тогда ваш .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.
Сценарии на стороне сервера должны обновлять файловую структуру кеша и выполнять уборку.
Вы можете сделать это с помощью глобальной переменной $_SERVER["REQUEST_URI"]
и использовать внутренний PHP md5()
функция для его создания.
Если вы хотите выполнять это каждый раз, просто добавьте код php в auto_prepend_file
переменная в php.ini.