Используя Apache 2.4 и следуя примерам здесь https://httpd.apache.org/docs/2.4/expr.html
Вот мой код
<If "!%{REQUEST_URI} =~ m#files/cache/static/[A-Za-z_\-0-9]+.cache#">
Header set foo-checksum "expr=%{md5:foo}"
</If>
Я сейчас просто играю но как только использую
Header set foo-checksum "expr=%{md5:foo}"
По их примеру - я получаю
AH00526: Syntax error on line 130 of /etc/httpd/conf/httpd.conf:
httpd[19459]: Unrecognized header format %
httpd.service: main process exited, code=exited, status=1/FAILURE
При запуске apache. Любые идеи? Я пробовал его и вне выражения, и он дает ту же ошибку
Другие выражения работают.
Вам необходимо использовать Apache v2.4.10 или выше, и, поскольку Ubuntu 14.04 LTS поставляется с v2.4.7, это, скорее всего, то, что вы используете. В документация вкратце упоминает об этом в начале документации директивы Header:
Совместимость: SetIfEmpty доступен в 2.4.7 и новее, expr = значение доступно в версии 2.4.10 и новее
Я запустил пару серверов, чтобы убедиться, что это работает
Apache v2.4.12:
root@ubuntu-server:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 15.10
Release: 15.10
Codename: wily
root@ubuntu-server:~# cat /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
Header set foo-checksum "expr=%{md5:foo}"
</VirtualHost>
root@ubuntu-server:~# apachectl -v
Server version: Apache/2.4.12 (Ubuntu)
Server built: Jul 24 2015 15:59:00
root@ubuntu-server:~# service apache2 reload
root@ubuntu-server:~# curl -I localhost
HTTP/1.1 200 OK
Date: Mon, 07 Mar 2016 21:15:38 GMT
Server: Apache/2.4.12 (Ubuntu)
Last-Modified: Mon, 07 Mar 2016 20:57:04 GMT
ETag: "2c39-52d7bb502f118"
Accept-Ranges: bytes
Content-Length: 11321
Vary: Accept-Encoding
foo-checksum: acbd18db4cc2f85cedef654fccc4a4d8
Content-Type: text/html
но не на Apache v2.4.7:
root@ubuntu-server:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.4 LTS
Release: 14.04
Codename: trusty
root@ubuntu-server:~# cat /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
Header set foo-checksum "expr=%{md5:foo}"
</VirtualHost>
root@ubuntu-server:~# apachectl -v
Server version: Apache/2.4.7 (Ubuntu)
Server built: Jan 14 2016 17:45:23
root@ubuntu-server:~# service apache2 reload
* Reloading web server apache2 *
* The apache2 configtest failed. Not doing anything.
Output of config test was:
AH00526: Syntax error on line 2 of /etc/apache2/sites-enabled/000-default.conf:
Unrecognized header format %
Action 'configtest' failed.
The Apache error log may have more information.