3e0c3032b6
Koha serves static .js files as application/javascript (if /etc/mime.types
says to) and serves them compressed, but output_with_http_headers uses the
currently-correct text/javascript mimetype, and Koha doesn't compress that.
Test plan:
1. Set the preference EnableAdvancedCatalogingEditor to Enable.
2. Open the browser Web Developer Tools to the Network tab
3. Load Cataloging - Advanced editor
4. Click on the line for the framework?frameworkcode=&callback=define load
5. Note the content-type text/javascript, no Content-Encoding line, and
the size of 1.9MB
6. Apply the patches from bug 36463 if they haven't been pushed, then this
patch, and reset_all
7. Repeat steps 1-4, and note a Content-Encoding: gzip header and a
Transferred size around 160KB
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit c52af2cef0
)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
287 lines
9.9 KiB
Text
287 lines
9.9 KiB
Text
# Koha Apache Configuration Directives
|
|
|
|
#NameVirtualHost *
|
|
|
|
## OPAC
|
|
<VirtualHost __WEBSERVER_IP__:__WEBSERVER_PORT__>
|
|
ServerAdmin __WEBMASTER_EMAIL__
|
|
DocumentRoot __OPAC_WWW_DIR__
|
|
ServerName __WEBSERVER_HOST__
|
|
# ServerAlias opac.mydomain.com
|
|
ScriptAlias /cgi-bin/koha/ "__OPAC_CGI_DIR__/opac/"
|
|
ScriptAlias /index.html "__OPAC_CGI_DIR__/opac/opac-main.pl"
|
|
ScriptAlias /opac-search.pl "__OPAC_CGI_DIR__/opac/opac-search.pl"
|
|
ScriptAlias /search "__OPAC_CGI_DIR__/opac/opac-search.pl"
|
|
ErrorLog __LOG_DIR__/koha-opac-error_log
|
|
# CustomLog __LOG_DIR__/koha-opac-access.log combined
|
|
# TransferLog __LOG_DIR__/koha-opac-access.log
|
|
SetEnv KOHA_CONF "__KOHA_CONF_DIR__/koha-conf.xml"
|
|
SetEnv PERL5LIB "__PERL5LIB_DIRS__"
|
|
|
|
# This syntax allows you to override a system preference
|
|
# for a given virtual host. Use with caution!
|
|
# You should add all the system preferences you override
|
|
# in one or more vhosts to the environment variable
|
|
# OVERRIDE_SYSPREF_NAMES for your staff intranet vhost
|
|
# SetEnv OVERRIDE_SYSPREF_PrefName Value
|
|
|
|
<Directory "__OPAC_WWW_DIR__">
|
|
Options -Indexes
|
|
</Directory>
|
|
|
|
# Secure internal stuff
|
|
<DirectoryMatch "__OPAC_WWW_DIR__/.*/(modules|xslt|includes)">
|
|
Require all denied
|
|
</DirectoryMatch>
|
|
|
|
<IfModule mod_gzip.c>
|
|
mod_gzip_on yes
|
|
mod_gzip_dechunk yes
|
|
mod_gzip_keep_workfiles No
|
|
mod_gzip_can_negotiate yes
|
|
mod_gzip_update_static No
|
|
mod_gzip_temp_dir /tmp
|
|
mod_gzip_minimum_file_size 512
|
|
mod_gzip_maximum_file_size 1000000
|
|
mod_gzip_maximum_inmem_size 1000000
|
|
mod_gzip_handle_methods GET POST
|
|
mod_gzip_item_exclude reqheader "User-Agent: .*Mozilla/4\..*\["
|
|
mod_gzip_item_exclude mime ^image/.*
|
|
mod_gzip_item_exclude rspheader Content-Type:image/*
|
|
mod_gzip_item_include file \.js$
|
|
mod_gzip_item_include mime ^application/javascript$
|
|
mod_gzip_item_include mime ^text/javascript$
|
|
mod_gzip_item_include mime ^application/x-javascript$
|
|
mod_gzip_item_include file \.php$
|
|
mod_gzip_item_include mime ^text/html$
|
|
mod_gzip_item_include file \.css$
|
|
mod_gzip_item_include mime ^text/css$
|
|
</IfModule>
|
|
|
|
<IfModule mod_deflate.c>
|
|
|
|
# Compress content with type html, text, and css, ...
|
|
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css
|
|
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/rss+xml
|
|
AddOutputFilterByType DEFLATE application/javascript text/javascript application/x-javascript application/json
|
|
|
|
DeflateCompressionLevel 9
|
|
|
|
# Properly handle old browsers that do not support compression
|
|
BrowserMatch ^Mozilla/4 gzip-only-text/html
|
|
BrowserMatch ^Mozilla/4\.0[678] no-gzip
|
|
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
|
|
|
|
DeflateFilterNote Input instream
|
|
DeflateFilterNote Output outstream
|
|
DeflateFilterNote Ratio ratio
|
|
|
|
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
|
|
<IfModule mod_headers.c>
|
|
#properly handle requests coming from behind proxies
|
|
Header append Vary User-Agent
|
|
</IfModule>
|
|
</IfModule>
|
|
|
|
|
|
# Repeat this virtualhost stanza changing the following environment vars to
|
|
# create multiple OPAC interfaces with custom css and/or search limits:
|
|
# SetEnv OPAC_CSS_OVERRIDE mystyle.css
|
|
# SetEnv OPAC_SEARCH_LIMIT branch:CODE
|
|
# SetEnv OPAC_LIMIT_OVERRIDE 1
|
|
|
|
Options +FollowSymLinks
|
|
|
|
ErrorDocument 400 /cgi-bin/koha/errors/400.pl
|
|
ErrorDocument 401 /cgi-bin/koha/errors/401.pl
|
|
ErrorDocument 403 /cgi-bin/koha/errors/403.pl
|
|
ErrorDocument 404 /cgi-bin/koha/errors/404.pl
|
|
ErrorDocument 500 /cgi-bin/koha/errors/500.pl
|
|
|
|
<IfModule mod_rewrite.c>
|
|
# Rewrite Rules
|
|
RewriteEngine On
|
|
|
|
RewriteRule ^/bib/([^\/]*)/?$ /cgi-bin/koha/opac-detail\.pl?bib=$1 [PT]
|
|
RewriteRule ^/isbn/([^\/]*)/?$ /search?q=isbn:$1 [PT]
|
|
RewriteRule ^/issn/([^\/]*)/?$ /search?q=issn:$1 [PT]
|
|
RewriteRule ^(.*)_[0-9]{2}\.[0-9]{7}\.(js|css)$ $1.$2 [L]
|
|
|
|
RewriteRule ^/cgi-bin/koha/erm/.*$ /cgi-bin/koha/erm/erm.pl [PT]
|
|
RewriteRule ^/cgi-bin/koha/preservation/.*$ /cgi-bin/koha/preservation/home.pl [PT]
|
|
|
|
# REST API configuration
|
|
Alias "/api" "__API_CGI_DIR__"
|
|
<Directory __API_CGI_DIR__>
|
|
Options +ExecCGI +FollowSymlinks
|
|
AddHandler cgi-script .pl
|
|
|
|
SetEnv MOJO_MODE "production"
|
|
|
|
RewriteEngine On
|
|
RewriteBase /api/
|
|
RewriteCond %{REQUEST_URI} !^/api/v[0-1]+/app.pl
|
|
RewriteRule ^(v[0-9]+)/(.*)$ /api/$1/app.pl/api/$1/$2 [L]
|
|
|
|
</Directory>
|
|
</IfModule>
|
|
|
|
<IfModule mod_expires.c>
|
|
ExpiresActive on
|
|
ExpiresByType text/css "access plus 60 days"
|
|
ExpiresByType application/javascript "access plus 60 days"
|
|
ExpiresByType image/png "access plus 12 hours"
|
|
ExpiresByType image/gif "access plus 12 hours"
|
|
</IfModule>
|
|
</VirtualHost>
|
|
|
|
## Intranet
|
|
<VirtualHost __WEBSERVER_IP__:__WEBSERVER_PORT_LIBRARIAN__>
|
|
ServerAdmin __WEBMASTER_EMAIL__
|
|
DocumentRoot __INTRANET_WWW_DIR__
|
|
ServerName __WEBSERVER_HOST__:__WEBSERVER_PORT_LIBRARIAN__
|
|
# ServerAlias intranet.mydomain.com
|
|
ScriptAlias /cgi-bin/koha/ "__INTRANET_CGI_DIR__/"
|
|
ScriptAlias /index.html "__INTRANET_CGI_DIR__/mainpage.pl"
|
|
ScriptAlias /search "__INTRANET_CGI_DIR__/catalogue/search.pl"
|
|
Alias /plugin/ "__PLUGINS_DIR__/"
|
|
ErrorLog __LOG_DIR__/koha-error_log
|
|
# TransferLog __LOG_DIR__/koha-access.log
|
|
SetEnv KOHA_CONF "__KOHA_CONF_DIR__/koha-conf.xml"
|
|
SetEnv PERL5LIB "__PERL5LIB_DIRS__"
|
|
Options +FollowSymLinks
|
|
|
|
# If you are overriding any system preferences,
|
|
# list them in this variable so the preference editor
|
|
# knows that they have been overridden.
|
|
# SetEnv OVERRIDE_SYSPREF_NAMES "Pref1,Pref2,Pref3"
|
|
|
|
ErrorDocument 400 /cgi-bin/koha/errors/400.pl
|
|
ErrorDocument 401 /cgi-bin/koha/errors/401.pl
|
|
ErrorDocument 403 /cgi-bin/koha/errors/403.pl
|
|
ErrorDocument 404 /cgi-bin/koha/errors/404.pl
|
|
ErrorDocument 500 /cgi-bin/koha/errors/500.pl
|
|
|
|
<Directory "__INTRANET_WWW_DIR__">
|
|
Options -Indexes
|
|
</Directory>
|
|
|
|
# Secure internal stuff
|
|
<DirectoryMatch "__INTRANET_WWW_DIR__/.*/(modules|xslt|includes)">
|
|
Require all denied
|
|
<FilesMatch "\.(json)$">
|
|
Require all granted
|
|
</FilesMatch>
|
|
</DirectoryMatch>
|
|
|
|
<IfModule mod_gzip.c>
|
|
mod_gzip_on yes
|
|
mod_gzip_dechunk yes
|
|
mod_gzip_keep_workfiles No
|
|
mod_gzip_can_negotiate yes
|
|
mod_gzip_update_static No
|
|
mod_gzip_temp_dir /tmp
|
|
mod_gzip_minimum_file_size 512
|
|
mod_gzip_maximum_file_size 1000000
|
|
mod_gzip_maximum_inmem_size 1000000
|
|
mod_gzip_handle_methods GET POST
|
|
mod_gzip_item_exclude reqheader "User-Agent: .*Mozilla/4\..*\["
|
|
mod_gzip_item_exclude mime ^image/.*
|
|
mod_gzip_item_exclude rspheader Content-Type:image/*
|
|
mod_gzip_item_include file \.js$
|
|
mod_gzip_item_include mime ^application/javascript$
|
|
mod_gzip_item_include mime ^text/javascript$
|
|
mod_gzip_item_include mime ^application/x-javascript$
|
|
mod_gzip_item_include file \.php$
|
|
mod_gzip_item_include mime ^text/html$
|
|
mod_gzip_item_include file \.css$
|
|
mod_gzip_item_include mime ^text/css$
|
|
</IfModule>
|
|
|
|
<IfModule mod_deflate.c>
|
|
|
|
# Compress content with type html, text, and css, ...
|
|
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css
|
|
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/rss+xml
|
|
AddOutputFilterByType DEFLATE application/javascript text/javascript application/x-javascript application/json
|
|
|
|
DeflateCompressionLevel 9
|
|
|
|
# Properly handle old browsers that do not support compression
|
|
BrowserMatch ^Mozilla/4 gzip-only-text/html
|
|
BrowserMatch ^Mozilla/4\.0[678] no-gzip
|
|
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
|
|
|
|
DeflateFilterNote Input instream
|
|
DeflateFilterNote Output outstream
|
|
DeflateFilterNote Ratio ratio
|
|
|
|
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
|
|
<IfModule mod_headers.c>
|
|
#properly handle requests coming from behind proxies
|
|
Header append Vary User-Agent
|
|
</IfModule>
|
|
</IfModule>
|
|
|
|
<IfModule mod_rewrite.c>
|
|
# Rewrite Rules
|
|
RewriteEngine On
|
|
|
|
RewriteRule ^/bib/([^\/]*)/?$ /cgi-bin/koha/catalogue/detail.pl?biblionumber=$1 [PT]
|
|
RewriteRule ^/isbn/([^\/]*)/?$ /search?q=isbn:$1 [PT]
|
|
RewriteRule ^/issn/([^\/]*)/?$ /search?q=issn:$1 [PT]
|
|
RewriteRule ^(.*)_[0-9]{2}\.[0-9]{7}\.(js|css)$ $1.$2 [L]
|
|
|
|
|
|
# REST API configuration
|
|
Alias "/api" "__API_CGI_DIR__"
|
|
<Directory __API_CGI_DIR__>
|
|
Options +ExecCGI +FollowSymlinks
|
|
AddHandler cgi-script .pl
|
|
|
|
SetEnv MOJO_MODE "production"
|
|
|
|
RewriteEngine On
|
|
RewriteBase /api/
|
|
RewriteCond %{REQUEST_URI} !^/api/v[0-1]+/app.pl
|
|
RewriteRule ^(v[0-9]+)/(.*)$ /api/$1/app.pl/api/$1/$2 [L]
|
|
</Directory>
|
|
</IfModule>
|
|
|
|
<IfModule mod_expires.c>
|
|
ExpiresActive on
|
|
ExpiresByType text/css "access plus 60 days"
|
|
ExpiresByType application/javascript "access plus 60 days"
|
|
ExpiresByType image/png "access plus 12 hours"
|
|
ExpiresByType image/gif "access plus 12 hours"
|
|
</IfModule>
|
|
</VirtualHost>
|
|
|
|
# Uncomment this VirtualHost to enable API access through
|
|
# api.__WEBSERVER_HOST__:__WEBSERVER_PORT__
|
|
#<VirtualHost __WEBSERVER_IP__:__WEBSERVER_PORT__>
|
|
# ServerAdmin __WEBMASTER_EMAIL__
|
|
# DocumentRoot __INTRANET_CGI_DIR__/api
|
|
# ServerName api.__WEBSERVER_HOST__:__WEBSERVER_PORT__
|
|
# SetEnv KOHA_CONF "__KOHA_CONF_DIR__/koha-conf.xml"
|
|
# SetEnv PERL5LIB "__PERL5LIB_DIRS__"
|
|
# ErrorLog __LOG_DIR__/koha-api-error_log
|
|
#
|
|
# <IfModule mod_rewrite.c>
|
|
# <Directory __API_CGI_DIR__>
|
|
# Options +ExecCGI +FollowSymlinks
|
|
# AddHandler cgi-script .pl
|
|
#
|
|
# SetEnv MOJO_MODE "production"
|
|
#
|
|
# RewriteEngine on
|
|
#
|
|
# RewriteRule ^api/(.*) $1 [L]
|
|
#
|
|
# RewriteCond %{REQUEST_FILENAME} !-f
|
|
# RewriteCond %{REQUEST_FILENAME} !-d
|
|
# RewriteCond %{DOCUMENT_ROOT}/$1/app.pl -f
|
|
# RewriteRule ^(.*?)/.* $1/app.pl/api/$0 [L]
|
|
# </Directory>
|
|
# </IfModule>
|
|
#</VirtualHost>
|