значение RewriteBase доступно как переменная / ссылка?
Я пишу файл .htaccess, который проверит, существует ли запрошенная страница в кеше или нет. Чтобы выполнить проверку (и сохранить типизацию), я устанавливаю переменную ENV с расположением кэша:
# all this works as I expect #
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /some/path/
RewriteRule ^(.*)$ - [E=rewritebase:/some/path/,E=cache:%{ENV:rewritebase}cache/]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{ENV:cache}$1\.html -f
RewriteRule ^(.*)$ $1\.html [L]
</IfModule>
Как вы можете видеть, мне также необходимо установить переменную ENV в значение «стоять на месте»; для значения RewriteBase. Я бы предпочел этого не делать, поскольку, если RewriteBase изменен, я должен также помнить об изменении переменной ENV. В конце концов, это может быть частью CMS, используемой другими, которую я хочу сделать максимально простой / понятной для настройки, с наименьшим количеством возможностей для ошибок. Я хотел бы иметь возможность установить толькоENV:cache
переменнаяwithout необходимость установкиENV:rewritebase
переменная, вот так (или похожая):
# doesn't work #
RewriteRule ^(.*)$ - [E=cache:%{RewriteBase}cache/]
Как подразумевается,cache/
каталог всегда будет находиться внутри каталога, указанного в RewriteBase.
[редактировать]
, , , однако, это будетnot всегда быть физическим путем, где существует этот файл .htaccess.
[/редактировать]
Я также был бы рад услышать альтернативные предложения. Спасибо всем!