]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/examples/apache/eg_vhost.conf
033504f59024239b2aaff6e0e02ed41d0a1e8385
[Evergreen.git] / Open-ILS / examples / apache / eg_vhost.conf
1 # ----------------------------------------------------------------------------------
2 # This is the global Evergreen virtual host config.  Anything you want published
3 # through all virtual hosts (port 80, port 443, etc.) should live in here.
4 # ----------------------------------------------------------------------------------
5
6 # ----------------------------------------------------------------------------------
7 # Point / to the opac - if you have a custom skin or locale, point at it here
8 # ----------------------------------------------------------------------------------
9 RedirectMatch 301 ^/$ /opac/en-US/skin/default/xml/index.xml
10
11 # ----------------------------------------------------------------------------------
12 # Point / to the IP address redirector
13 # ----------------------------------------------------------------------------------
14 #<LocationMatch ^/$>
15 #    SetHandler perl-script
16 #    PerlHandler OpenILS::WWW::Redirect
17 #    Options +ExecCGI
18 #    PerlSendHeader On
19 #    #PerlSetVar OILSRedirectSkin "default"
20 #    # OILSRedirectDepth defaults to the depth of the branch that the OPAC was directed to
21 #    #PerlSetVar OILSRedirectDepth "0"
22 #    #PerlSetVar OILSRedirectLocale "en-US"
23 #    allow from all
24 #</LocationMatch>
25
26
27 # ----------------------------------------------------------------------------------
28 # Assign a default locale to the accessible OPAC
29 # ----------------------------------------------------------------------------------
30 RedirectMatch 301 ^/opac/extras/slimpac/start.html$    /opac/en-US/extras/slimpac/start.html
31 RedirectMatch 301 ^/opac/extras/slimpac/advanced.html$ /opac/en-US/extras/slimpac/advanced.html
32
33 # ----------------------------------------------------------------------------------
34 # Configure the gateway
35 # ----------------------------------------------------------------------------------
36 OSRFGatewayConfig /openils/conf/opensrf_core.xml
37 # Translator memcache server.  Default is localhost
38 # OSRFTranslatorCacheServer 127.0.0.1:11211
39
40
41 # ----------------------------------------------------------------------------------
42 # Added content plugin
43 # ----------------------------------------------------------------------------------
44 <Location /opac/extras/ac/>
45     SetHandler perl-script
46     PerlHandler OpenILS::WWW::AddedContent
47     Options +ExecCGI
48     PerlSendHeader On
49     allow from all
50 </Location>
51
52 # ----------------------------------------------------------------------------------
53 # Replace broken cover images with a transparent GIF by default
54 # ----------------------------------------------------------------------------------
55 RewriteEngine ON
56 RewriteRule ^/opac/extras/ac/jacket/(small|medium|large)/$ \
57     /opac/images/blank.png [P,L]
58
59 # ----------------------------------------------------------------------------------
60 # Add the row ID (RID) and date so we can make unAPI happy
61 # ----------------------------------------------------------------------------------
62 RewriteCond %{QUERY_STRING} (^r|&r)=(\d+)
63 RewriteRule . - [E=OILS_OPAC_RID:%2,E=OILS_TIME_YEAR:%{TIME_YEAR}]
64
65 # ----------------------------------------------------------------------------------
66 # Pull the locale from the URL
67 # ----------------------------------------------------------------------------------
68 RewriteCond %{REQUEST_URI} ^/opac/(.*?)/
69 RewriteRule . - [E=locale:%1]
70
71 # ----------------------------------------------------------------------------------
72 # Configure the OPAC
73 # ----------------------------------------------------------------------------------
74 <LocationMatch /opac/>
75     AddType application/xhtml+xml .xml
76    
77     # - configure mod_xmlent
78     XMLEntStripPI "yes"
79     XMLEntEscapeScript "no"
80     XMLEntStripComments "yes"
81     XMLEntContentType "text/html; charset=utf-8"
82     # forces quirks mode which we want for now
83     XMLEntStripDoctype "yes" 
84
85     # - set up the include handlers
86     Options +Includes
87     AddOutputFilter INCLUDES .xsl
88     AddOutputFilter INCLUDES;XMLENT .xml
89                     
90     SetEnvIf Request_URI ".*" OILS_OPAC_BASE=/opac/
91     
92     # This gives you the option to configure a different host to serve OPAC images from
93     # Specify the hostname (without protocol) and path to the images.  Protocol will
94     # be determined at runtime
95     #SetEnvIf Request_URI ".*" OILS_OPAC_IMAGES_HOST=static.example.org/opac/
96
97     # In addition to loading images from a static host, you can also load CSS and/or
98     # Javascript from a static host or hosts. Protocol will be determined at runtime
99     # and/or by configuration options immediately following.
100     #SetEnvIf Request_URI ".*" OILS_OPAC_CSS_HOST=static.example.org/opac/
101     #SetEnvIf Request_URI ".*" OILS_OPAC_JS_HOST=static.example.org/opac/
102
103     # If you are not able to serve static content via https and 
104     # wish to force http:// (and are comfortable with mixed-content
105     # warnings in client browsers), set this:
106     #SetEnvIf Request_URI ".*" OILS_OPAC_STATIC_PROTOCOL=http
107
108     # If you would prefer to fall back to your non-static servers for 
109     # https pages, avoiding mixed-content warnings in client browsers
110     # and are willing to accept some increased server load, set this:
111     #SetEnvIf Request_URI ".*" OILS_OPAC_BYPASS_STATIC_FOR_HTTPS=yes
112
113     # Specify a ChiliFresh account to integrate their services with the OPAC
114     #SetEnv OILS_CHILIFRESH_ACCOUNT
115     #SetEnv OILS_CHILIFRESH_PROFILE
116     #SetEnv OILS_CHILIFRESH_URL http://chilifresh.com/on-site/js/evergreen.js
117
118     # Specify the initial script URL for Novelist (containing account credentials, etc.)
119     #SetEnv OILS_NOVELIST_URL
120     
121
122     # Uncomment to force SSL any time a patron is logged in.  This protects 
123     # authentication tokens.  Left commented out for backwards compat for now.
124     #SetEnv OILS_OPAC_FORCE_LOGIN_SSL 1
125
126
127     # If set, the skin uses the combined JS file at $SKINDIR/js/combined.js
128     #SetEnv OILS_OPAC_COMBINED_JS 1
129
130 </LocationMatch>
131
132 <Location /opac/>
133     # ----------------------------------------------------------------------------------
134     # Some mod_deflate fun
135     # ----------------------------------------------------------------------------------
136     <IfModule mod_deflate.c>
137         SetOutputFilter DEFLATE
138
139         BrowserMatch ^Mozilla/4 gzip-only-text/html
140         BrowserMatch ^Mozilla/4\.0[678] no-gzip
141         BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
142
143         SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
144
145         <IfModule mod_headers.c>
146             Header append Vary User-Agent env=!dont-vary
147         </IfModule>
148     </IfModule>
149
150 </Location>
151
152 <Location //opac/>
153     # ----------------------------------------------------------------------------------
154     # Some mod_deflate fun
155     # ----------------------------------------------------------------------------------
156     <IfModule mod_deflate.c>
157         SetOutputFilter DEFLATE
158
159         BrowserMatch ^Mozilla/4 gzip-only-text/html
160         BrowserMatch ^Mozilla/4\.0[678] no-gzip
161         BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
162
163         SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
164
165         <IfModule mod_headers.c>
166             Header append Vary User-Agent env=!dont-vary
167         </IfModule>
168     </IfModule>
169
170 </Location>
171
172 <Location /js/>
173     # ----------------------------------------------------------------------------------
174     # Some mod_deflate fun
175     # ----------------------------------------------------------------------------------
176     <IfModule mod_deflate.c>
177         SetOutputFilter DEFLATE
178
179         BrowserMatch ^Mozilla/4 gzip-only-text/html
180         BrowserMatch ^Mozilla/4\.0[678] no-gzip
181         BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
182
183         SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
184
185         <IfModule mod_headers.c>
186             Header append Vary User-Agent env=!dont-vary
187         </IfModule>
188     </IfModule>
189
190 </Location>
191
192 # ----------------------------------------------------------------------------------
193 # Force SSL on the OPAC's "My Account" page
194 # ----------------------------------------------------------------------------------
195 <LocationMatch .*/myopac.xml>
196     SSLRequireSSL
197 </LocationMatch>
198
199 <LocationMatch /opac/extras/>
200     # Force to en-US for now to satisfy bbags.xml
201     SetEnv locale en-US
202     Options +Includes
203     AddOutputFilter INCLUDES .xml
204     AddType application/xhtml+xml .xml
205 </LocationMatch>
206
207 RewriteCond %{QUERY_STRING} locale=([^&]*)
208 RewriteRule ^/opac/[a-z]{2}-[A-Z]{2}/extras/slimpac/(.*)$ /opac/%1/extras/slimpac/$1? [redirect]
209 <LocationMatch /opac/[a-z]{2}-[A-Z]{2}/extras/slimpac/>
210     AddOutputFilter INCLUDES;XMLENT .html
211 </LocationMatch>
212
213 # ----------------------------------------------------------------------------------
214 # Run server-side XUL and XHTML through xmlent to load the correct XML entities
215 # ----------------------------------------------------------------------------------
216 RewriteCond %{HTTP:Accept-Language} ([a-z]{2}-[A-Z]{2})
217 RewriteRule ^/xul/      -       [E=locale:%1]
218 RewriteRule ^/reports/  -       [E=locale:%1]
219
220 # Default to en-US if we haven't matched a locale of the form xx-YY 
221 RewriteCond %{HTTP:Accept-Language} !([a-z]{2}-[A-Z]{2})
222 RewriteRule ^/xul/      -       [E=locale:en-US]
223 RewriteRule ^/reports/  -       [E=locale:en-US]
224
225 # Default to en-US if we are just given en
226 RewriteCond %{ENV:locale} ^$ [OR]
227 RewriteCond %{ENV:locale} ^en$
228 RewriteRule . - [E=locale:en-US]
229
230 <LocationMatch /xul/.*\.x?html$>
231     Options +Includes
232     XMLEntEscapeScript "no"
233     XMLEntStripComments "yes"
234     XMLEntStripPI "yes"
235     XMLEntStripDoctype "yes"
236     XMLEntContentType "text/html; charset=utf-8"
237     AddOutputFilter INCLUDES;XMLENT .xhtml
238     AddOutputFilter INCLUDES;XMLENT .html
239     allow from all
240 </LocationMatch>
241
242
243 <LocationMatch /xul/.*\.xul$>
244     Options +Includes
245     XMLEntContentType "application/vnd.mozilla.xul+xml"
246     AddOutputFilter INCLUDES;XMLENT .xul
247     allow from all
248 </LocationMatch>
249
250 # ----------------------------------------------------------------------------------
251 # Self-serve password interface
252 # ----------------------------------------------------------------------------------
253 <Location /opac/password>
254     SetHandler perl-script
255     PerlHandler OpenILS::WWW::PasswordReset::password_reset
256     Options +ExecCGI
257     PerlSendHeader On
258     allow from all
259
260     # Force clients to use HTTPS
261     RewriteCond %{HTTPS} !=on [NC]
262     RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
263 </Location>
264
265 # ----------------------------------------------------------------------------------
266 # Supercat feeds
267 # ----------------------------------------------------------------------------------
268 <Location /opac/extras/oisbn>
269     SetHandler perl-script
270     PerlHandler OpenILS::WWW::SuperCat::oisbn
271     Options +ExecCGI
272     PerlSendHeader On
273     allow from all
274 </Location>
275 <Location /opac/extras/supercat>
276     SetHandler perl-script
277     PerlHandler OpenILS::WWW::SuperCat::supercat
278     Options +ExecCGI
279     PerlSendHeader On
280     allow from all
281 </Location>
282 <Location /opac/extras/unapi>
283     SetHandler perl-script
284     PerlHandler OpenILS::WWW::SuperCat::unapi
285     Options +ExecCGI
286     PerlSendHeader On
287     allow from all
288 </Location>
289 <Location /opac/extras/feed/bookbag>
290     SetHandler perl-script
291     PerlHandler OpenILS::WWW::SuperCat::bookbag_feed
292     Options +ExecCGI
293     PerlSendHeader On
294     allow from all
295 </Location>
296 <Location /opac/extras/opensearch>
297     SetHandler perl-script
298     PerlHandler OpenILS::WWW::SuperCat::opensearch_feed
299     Options +ExecCGI
300     PerlSendHeader On
301     allow from all
302 </Location>
303 <Location /opac/extras/sru>
304     SetHandler perl-script
305     PerlHandler OpenILS::WWW::SuperCat::sru_search
306     Options +ExecCGI
307     PerlSendHeader On
308     allow from all
309 </Location>
310 <Location /opac/extras/feed/freshmeat>
311     SetHandler perl-script
312     PerlHandler OpenILS::WWW::SuperCat::changes_feed
313     Options +ExecCGI
314     PerlSendHeader On
315     allow from all
316 </Location>
317 <Location /opac/extras/browse>
318     SetHandler perl-script
319     PerlHandler OpenILS::WWW::SuperCat::string_browse
320     Options +ExecCGI
321     PerlSendHeader On
322     allow from all
323 </Location>     
324 <Location /opac/extras/startwith>
325     SetHandler perl-script
326     PerlHandler OpenILS::WWW::SuperCat::string_startwith
327     Options +ExecCGI
328     PerlSendHeader On
329     allow from all
330 </Location>     
331         
332 # ----------------------------------------------------------------------------------
333 # Module for displaying OpenSRF API documentation
334 # ----------------------------------------------------------------------------------
335 <Location /opac/extras/docgen.xsl>
336     AddOutputFilter INCLUDES .xsl
337 </Location>
338
339 # ----------------------------------------------------------------------------------
340 # Module for processing staff-client offline scripts lives here
341 # ----------------------------------------------------------------------------------
342 <Directory "/openils/var/cgi-bin/offline">
343     AddHandler cgi-script .pl
344     AllowOverride None
345     Options +ExecCGI
346     allow from all
347 </Directory>
348         
349         
350 # ----------------------------------------------------------------------------------
351 # XXX Note, it's important to explicitly set the JSON encoding style 
352 # (OSRFGatewayLegacyJSON), since the default encoding style will likely change 
353 # with OpenSRF 1.0
354 # ----------------------------------------------------------------------------------
355 # OpenSRF JSON legacy gateway
356 # ----------------------------------------------------------------------------------
357 <Location /gateway>
358     SetHandler osrf_json_gateway_module
359     OSRFGatewayLegacyJSON "true"
360     allow from all
361 </Location>
362 # ----------------------------------------------------------------------------------
363 # New-style OpenSRF JSON gateway
364 # ----------------------------------------------------------------------------------
365 <Location /osrf-gateway-v1>
366     SetHandler osrf_json_gateway_module
367     OSRFGatewayLegacyJSON "false"
368     allow from all
369 </Location>
370
371 # ----------------------------------------------------------------------------------
372 # OpenSRF-over-HTTP translator
373 # (http://open-ils.org/dokuwiki/doku.php?id=opensrf_over_http)
374 # ----------------------------------------------------------------------------------
375 <Location /osrf-http-translator>
376     SetHandler osrf_http_translator_module
377     allow from all
378 </Location>
379
380 # ----------------------------------------------------------------------------------
381 # The exporter lives here
382 # ----------------------------------------------------------------------------------
383 <Location /exporter>
384     SetHandler perl-script
385     PerlSetVar OILSProxyTitle "Exporter Login"
386     PerlSetVar OILSProxyDescription "Please log in with an authorized staff account to export records"
387     PerlSetVar OILSProxyPermissions "STAFF_LOGIN"
388     PerlHandler OpenILS::WWW::Proxy OpenILS::WWW::Exporter
389     Options +ExecCGI
390     PerlSendHeader On
391     allow from all
392 </Location>
393
394 <Location /opac/extras/merge_template>
395     SetHandler perl-script
396     PerlSetVar OILSProxyTitle "Batch Update Login"
397     PerlSetVar OILSProxyDescription "Please log in to update records in batch"
398     PerlSetVar OILSProxyPermissions "STAFF_LOGIN"
399     PerlHandler OpenILS::WWW::Proxy OpenILS::WWW::TemplateBatchBibUpdate
400     PerlSendHeader On
401     Options +ExecCGI
402     allow from all
403 </Location>
404
405 <Location /opac/extras/circ>
406     SetHandler perl-script
407     PerlSetVar OILSProxyTitle "Circ Extras Login"
408     PerlSetVar OILSProxyDescription "Please log in with an authorized staff account to export records"
409     PerlSetVar OILSProxyPermissions "STAFF_LOGIN"
410     PerlHandler OpenILS::WWW::Proxy
411     Options +ExecCGI
412     PerlSendHeader On
413     allow from all
414 </Location>
415
416 # ----------------------------------------------------------------------------------
417 # Reporting output lives here
418 # ----------------------------------------------------------------------------------
419 <Location /reporter/>
420     SetHandler perl-script
421     PerlSetVar OILSProxyTitle "Report Login"
422     PerlSetVar OILSProxyDescription "Please log in with an authorized staff account to view this report"
423     PerlSetVar OILSProxyPermissions "VIEW_REPORT_OUTPUT"
424     PerlHandler OpenILS::WWW::Proxy
425     Options +ExecCGI
426     PerlSendHeader On
427     allow from all
428 </Location>
429
430 # ----------------------------------------------------------------------------------
431 # Selfcheck interface
432 # ----------------------------------------------------------------------------------
433 <LocationMatch .*/selfcheck.xml>
434     SetHandler perl-script
435     PerlSetVar OILSProxyTitle "Self-check Login"
436     PerlSetVar OILSProxyDescription "Please log in with an authorized staff account to activate the self-check interface"
437     PerlSetVar OILSProxyPermissions "STAFF_LOGIN"
438     PerlHandler OpenILS::WWW::Proxy
439     Options +ExecCGI
440     PerlSendHeader On
441     allow from all
442 </LocationMatch>
443
444
445 # ----------------------------------------------------------------------------------
446 # Reports GUI
447 # ----------------------------------------------------------------------------------
448 <LocationMatch /reports>
449     Options +Includes
450     AddOutputFilter INCLUDES;XMLENT .xhtml
451 </LocationMatch>
452
453 <LocationMatch /reports/fm_IDL.xml>
454     IDLChunkStripPI "yes"
455     IDLChunkEscapeScript "no"
456     IDLChunkStripComments "yes"
457     IDLChunkStripDoctype "yes"
458     IDLChunkContentType "application/xml; charset=utf-8"
459     AddOutputFilter INCLUDES;IDLCHUNK .xml
460 </LocationMatch>
461
462 # ----------------------------------------------------------------------------------
463 # EDI Message viewer
464 # ----------------------------------------------------------------------------------
465 <Location /edi>
466     SetHandler perl-script
467     PerlHandler OpenILS::WWW::EDI
468     Options +ExecCGI
469     PerlSendHeader On
470     allow from all
471 </Location>     
472
473 # ----------------------------------------------------------------------------------
474 # XML-RPC gateway
475 # ----------------------------------------------------------------------------------
476 <Location /xml-rpc>
477     SetHandler perl-script
478     PerlHandler OpenILS::WWW::XMLRPCGateway
479     Options +ExecCGI
480     PerlSendHeader On
481     allow from all
482 </Location>
483
484 # ----------------------------------------------------------------------------------
485 # Conify - next-generation Evergreen administration interface
486 # ----------------------------------------------------------------------------------
487 RewriteRule ^/conify/([a-z]{2}-[A-Z]{2})/global/(.*)$ /conify/global/$2 [E=locale:$1,L]
488 <Location /conify>
489     Options +Includes
490     XMLEntStripPI "yes"
491     XMLEntEscapeScript "no"
492     XMLEntStripComments "no"
493     XMLEntContentType "text/html; charset=utf-8"
494     AddOutputFilter INCLUDES;XMLENT .html
495  
496     SetHandler perl-script
497     PerlSetVar OILSProxyTitle "Dojo Admin Login"
498     PerlSetVar OILSProxyDescription "Please log in with an authorized staff account to administer Evergreen"
499     PerlSetVar OILSProxyPermissions "STAFF_LOGIN"
500     PerlHandler OpenILS::WWW::Proxy
501     Options +ExecCGI
502     PerlSendHeader On
503     allow from all
504 </Location>
505
506 # ----------------------------------------------------------------------------------
507 # Vandelay importers / exporters (your Web interface to bibliographic travel)
508 # ----------------------------------------------------------------------------------
509 RedirectMatch 301 ^/vandelay/vandelay.xml(.*)$ /vandelay/en-US/vandelay.xml$1
510
511 RewriteRule ^/vandelay/([a-z]{2}-[A-Z]{2})/(.*)$ /vandelay/$2 [E=locale:$1]
512
513 <LocationMatch /vandelay.*xml>
514     XMLEntStripPI "yes"
515     XMLEntEscapeScript "no"
516     XMLEntStripComments "yes"
517     XMLEntContentType "text/html; charset=utf-8"
518     XMLEntStripDoctype "yes"
519     AddOutputFilter INCLUDES;XMLENT .xml
520         SetHandler perl-script
521         PerlSetVar OILSProxyTitle "Vandelay Login"
522         PerlSetVar OILSProxyDescription "Please log in with an authorized staff account to import MARC records"
523         PerlSetVar OILSProxyPermissions "IMPORT_MARC"
524         PerlHandler OpenILS::WWW::Proxy
525         Options +ExecCGI
526         PerlSendHeader On
527         allow from all
528 </LocationMatch>
529 <Location /vandelay-upload>
530     SetHandler perl-script
531     PerlHandler OpenILS::WWW::Vandelay::spool_marc
532     Options +ExecCGI
533     allow from all
534 </Location>
535
536 # OpenURL 0.1 searching based on OpenSearch
537 RewriteMap openurl prg:/openils/bin/openurl_map.pl
538 RewriteCond %{QUERY_STRING} (^.*$)
539 RewriteRule ^/openurl$ ${openurl:%1} [NE,PT]
540
541
542
543 # General Evergreen web template processor
544 <Location /eg>
545     SetHandler perl-script
546     PerlHandler OpenILS::WWW::EGWeb
547     Options +ExecCGI
548     PerlSendHeader On
549     allow from all
550 </Location>
551 # Note: the template processor will decline handling anything it does not
552 # have an explicit configuration for, which means it will fall back to 
553 # Apache to serve the file.  However, in the interest of speed, go ahead 
554 # and tell Apache to avoid asking OpenILS::WWW::EGWeb for static content.
555 # Add more exemptions as needed.
556 <LocationMatch ^/eg/.*(\.js|\.css|\.html|\.xhtml|\.xml|\.jpg|\.png|\.gif)$>
557     SetHandler None
558 </LocationMatch>
559
560 # ----------------------------------------------------------------------------------
561 # Some mod_deflate logging setup
562 # ----------------------------------------------------------------------------------
563 <IfModule mod_deflate.c>
564     DeflateFilterNote Input instream
565     DeflateFilterNote Output outstream
566     DeflateFilterNote Ratio ratio
567
568     LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
569     CustomLog /var/log/apache2/deflate_log deflate
570 </IfModule>
571
572
573 <Location /IDL2js>
574
575     SetHandler perl-script
576     PerlHandler OpenILS::WWW::IDL2js
577     Options +ExecCGI
578     PerlSendHeader On
579     allow from all
580
581     <IfModule mod_headers.c>
582         Header append Cache-Control "public"
583     </IFModule>
584
585     <IfModule mod_deflate.c>
586         SetOutputFilter DEFLATE
587         BrowserMatch ^Mozilla/4 gzip-only-text/html
588         BrowserMatch ^Mozilla/4\.0[678] no-gzip
589         BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
590         SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
591         <IfModule mod_headers.c>
592             Header append Vary User-Agent env=!dont-vary
593         </IfModule>
594     </IfModule>
595 </Location>