File Coverage

templates/partials/apache2htaccess.ep
Criterion Covered Total %
statement 6 6 100.0
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 8 8 100.0


line stmt bran cond sub pod time code
1 1     1   10148 # Apache 2 .htaccess configuration for Ado.
  1     1   2  
  1         9  
  1         121  
  1         2  
  1         774  
2             # Generated by Ado::Command::generate::apache2htaccess using template <%= __FILE__ %>.
3             # Note! not sure if the produced .htacces will work fine for you
4             # so make sure to test locally first.
5              
6             % my $args = shift;
7             % my $root = $args->{DocumentRoot};
8             % my $plackup = $args->{plackup};
9             % my $moniker = $args->{moniker};
10              
11              
12             # Directives, comments and ideas in this file are taken from Drupal .htaccess,
13             # from MYDLjE, from Contao, from TWiki, so it is hard to tell really...
14              
15             # Move the content of this file to the virtual host
16             # configuration file for better performance if you have the right to do so.
17             # Set some Variables for MOJO
18             # MOJO_MODE(development|staging|production):
19             # Uncomment the following line when going live.
20             # SetEnv MOJO_MODE production
21              
22             # use utf-8 encoding for anything served text/plain or text/html
23             AddDefaultCharset utf-8
24              
25             # Support Offline Web applications
26             AddType text/cache-manifest .appcache
27              
28             # Protect files and directories from prying eyes.
29            
30             #2.2 configuration:
31            
32             Order deny,allow
33             Deny from all
34            
35             #2.4 configuration:
36            
37             Require all denied
38            
39            
40             # Don't show directory listings for URLs which map to a directory.
41             Options -Indexes
42              
43             # Follow symbolic links in this directory.
44             Options +FollowSymLinks
45              
46              
47             # Requires mod_expires to be enabled.
48            
49             # Enable expirations.
50             ExpiresActive On
51              
52             ExpiresDefault "access plus 1 month"
53            
54             Header append Cache-Control "public"
55            
56             $>
57             # Do not allow Ado responses to be cached unless they explicitly send cache
58             # headers themselves.
59             ExpiresActive Off
60            
61            
62             #Expire manifest files immediately.
63             ExpiresDefault "access plus 0 seconds"
64            
65            
66              
67             # Additional headers for static files caching.
68             #
69             #
70             # Header set Cache-Control s-maxage=2592000 "expr=%{REQUEST_STATUS} == 200"
71             #
72             #
73             # Since we're sending far-future expires, we don't need ETags for
74             # static content.
75             # developer.yahoo.com/performance/rules.html#etags
76             FileETag None
77              
78             % if( grep {$_ eq 'cgi'} @{$args->{modules}} ){
79            
80             # Set explicitly Ado executables as cgi scripts.
81             # Running Mojolicious apps (such as Ado) as CGI is discouraged.
82             # However it can perfectly suit your needs if you only aim static pages generation.
83             # See Ado::Control::Doc as an example on which you can elaborate.
84              
85             # This is the fallback mode in case no Plack with FCGI and FCGI::ProcManager
86             # neither Mojo::Server::FastCGI are installed.
87             )$">
88             SetHandler cgi-script
89            
90            
91             % }
92             % my $has_msfcgi = eval {require Mojo::Server::FastCGI};
93             % if(grep {$_ eq 'fcgid'} @{$args->{modules}}){
94            
95             # See http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
96             % if(!$plackup && !$has_msfcgi) {
97             # Sorry! no Plack with FCGI and FCGI::ProcManager neither Mojo::Server::FastCGI are installed.
98             # Install at least one of them and rerun '<%=$moniker%> apache2htaccess'.
99             % }
100             % else {
101             )$">
102             SetHandler fcgid-script
103            
104             % }
105             % if($plackup){
106             # plackup must be run with the same perl as <%=$moniker%>
107             % my $sock = File::Spec->catfile(File::Spec->tmpdir(), $moniker.time().$$.'.sock');
108             % $sock =~ s|\\|/|g;
109             # Using Plack with FCGI and FCGI::ProcManager
110             FcgidWrapper "<%= "$plackup $root/bin/$moniker -s FCGI -l $sock" %>"
111             % }
112              
113             % if($has_msfcgi){
114             # Use your own perl. You may need to fix paths if they contain spaces.
115             # Using Mojo::Server::FastCGI.
116             # Uncomment the following (and comment any previous "FcgidWrapper")
117             # if you prefer Mojo::Server::FastCGI.
118             <%= $plackup? '#':''%> FcgidWrapper "<%= "$args->{perl} $root/bin/$moniker" %> fastcgi"
119             % }
120            
121             % }
122             # Make Ado handle any 404 errors.
123             ErrorDocument 404 /bin/<%=$moniker%>
124             DirectoryIndex /bin/<%=$moniker%>
125              
126             #Some more security. Redefine the mime type for the most common types of scripts
127             AddType text/plain .shtml .php .php3 .phtml .phtm .pl .py .cgi
128              
129             # Various rewrite rules.
130            
131             RewriteEngine on
132              
133             # Set "protossl" to "s" if we were accessed via https://. This is used later
134             # if you enable "www." stripping or enforcement, in order to ensure that
135             # you don't bounce between http and https.
136             # RewriteRule ^ - [E=protossl]
137             # RewriteCond %{HTTPS} on
138             # RewriteRule ^ - [E=protossl:s]
139              
140             # Make sure Authorization HTTP header is available to Ado
141             # even when running as CGI or FastCGI.
142             # RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
143              
144             # Block access to "hidden" directories whose names begin with a period.
145             # RewriteRule "(^|/)\." - [F]
146              
147             # To redirect all users to access the site WITH the 'www.' prefix,
148             # (http://example.com/... will be redirected to http://www.example.com/...)
149             # uncomment the following:
150             # RewriteCond %{HTTP_HOST} .
151             # RewriteCond %{HTTP_HOST} !^www\. [NC]
152             # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
153             #
154             # To redirect all users to access the site WITHOUT the 'www.' prefix,
155             # (http://www.example.com/... will be redirected to http://example.com/...)
156             # uncomment the following:
157             # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
158             # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
159              
160             # If your site is running in a VirtualDocumentRoot at http://example.com/,
161             # use the following line:
162             # RewriteBase /
163             # Otherwise set RewriteBase to the subdirectory where your site is, e.g. /<%=$moniker%>.
164             # RewriteBase /<%=$moniker%>
165              
166             # Redirect all requests for Ado static files to public/ directory.
167             RewriteCond %{REQUEST_FILENAME} !-f
168             RewriteCond %{REQUEST_FILENAME} !-d
169             RewriteRule ^((css|doc|fonts|img|js|vendor|favicon|index)\b.*)$ /public/$1 [L]
170              
171              
172             RewriteCond %{REQUEST_FILENAME} !-f
173             RewriteCond %{REQUEST_FILENAME} !-d
174             RewriteRule (.*) /bin/<%=$moniker%>/$1 [L]
175              
176