## OPAC
<VirtualHost __WEBSERVER_IP__:__WEBSERVER_PORT__>
ServerAdmin __WEBMASTER_EMAIL__
- DocumentRoot __BASE_DIR__/templates/koha-tmpl/
+ DocumentRoot __OPAC_WWW_DIR__
ServerName __WEBSERVER_HOST__
# ServerAlias opac.mydomain.com
- ScriptAlias /cgi-bin/koha/ "__CGI_DIR__/opac/"
- ScriptAlias /index.html "__CGI_DIR__/opac/opac-main.pl"
- ScriptAlias /opac-search.pl "__CGI_DIR__/opac/search"
- ScriptAlias /search "__CGI_DIR__/opac/search"
+ 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
-# TransferLog __LOG_DIR__/koha-opac-access_log
- SetEnv KOHA_CONF "__PREFIX__/share/koha/etc/koha-conf.xml"
+# 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 "__PERL_MODULE_DIR__"
+
+ # 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 ^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 application/javascript application/x-javascript
+
+ 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
-# Rewrite Rules
- RewriteEngine On
+ 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
+
+ #The following two directives are unnecessary to proper Koha functioning.
+ #RewriteCond %{QUERY_STRING} (.*?)(?:[A-Za-z0-9_-]+)=&(.*)
+ #RewriteRule (.+) $1?%1%2 [N,R,NE]
+ 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]
-# Uncomment to turn on rewrite logging
-# RewriteLog __LOG_DIR__/koha-opac-rewrite.log
-# RewriteLogLevel 1
- RewriteCond %{QUERY_STRING} (.*?)(?:[A-Za-z0-9_-]+)=&(.*)
- RewriteRule (.+) $1?%1%2 [N,R,NE]
+ # REST API configuration
+ Alias "/api" "__API_CGI_DIR__"
+ <Directory __API_CGI_DIR__>
+ Options +ExecCGI +FollowSymlinks
+ AddHandler cgi-script .pl
- 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]
+ 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 __BASE_DIR__/templates/koha-tmpl/
+ DocumentRoot __INTRANET_WWW_DIR__
ServerName __WEBSERVER_HOST__:__WEBSERVER_PORT_LIBRARIAN__
# ServerAlias intranet.mydomain.com
- ScriptAlias /cgi-bin/koha/ "__CGI_DIR__/koha/"
- ScriptAlias /index.html "__CGI_DIR__/koha/mainpage.pl"
- ScriptAlias /search "__CGI_DIR__/koha/search.pl"
+ 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 "__PREFIX__/share/koha/etc/koha-conf.xml"
+# TransferLog __LOG_DIR__/koha-access.log
+ SetEnv KOHA_CONF "__KOHA_CONF_DIR__/koha-conf.xml"
+ SetEnv PERL5LIB "__PERL_MODULE_DIR__"
Options +FollowSymLinks
- RewriteEngine On
-# Uncomment to turn on rewrite logging
-# RewriteLog __LOG_DIR__/koha-intranet-rewrite.log
-# RewriteLogLevel 1
-
- RewriteCond %{QUERY_STRING} (.*?)(?:[A-Za-z0-9_-]+)=&(.*)
- RewriteRule (.+) $1?%1%2 [N,R,NE]
- RewriteRule ^/bib/([^\/]*)/?$ /cgi-bin/koha/detail\.pl?bib=$1 [PT]
- RewriteRule ^/isbn/([^\/]*)/?$ /search?q=isbn:$1 [PT]
- RewriteRule ^/issn/([^\/]*)/?$ /search?q=issn:$1 [PT]
+
+ # 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
+ </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 ^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 application/javascript application/x-javascript
+
+ 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
+
+ #The following two directives are unnecessary to proper Koha functioning.
+ #RewriteCond %{QUERY_STRING} (.*?)(?:[A-Za-z0-9_-]+)=&(.*)
+ #RewriteRule (.+) $1?%1%2 [N,R,NE]
+ 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 "__PERL_MODULE_DIR__"
+# 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>