Möglicherweise gehört folgendes eher unter Apache, aber mal sehen. Ansonsten bitte verschieben.
Da ein aktuelles Webprojekt kein mod_perl installiert hat, benutze ich HTML::Mason mit einem Perl-Skript als CGI-Wrapper (=Mason-CGI).
Ich verwende HTML::Mason 1.26
Klappt auch alles wunderbar.
Meine .htaccess im Docroot ist
Action mason-cgi /cgi-bin/mason-handler.pl
<FilesMatch "\.m(html|txt|pl)$">
SetHandler mason-cgi
</FilesMatch>
Rufe ich zum Beispiel die existente URL /test/t.mhtml auf, klappt Mason vorzüglich.
Das Mason-Handler residiert im /cgi-bin Verzeichnis und Rechtemäßig ist auf rwxr-x-rx gesetzt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Mason::CGIHandler;
use lib qw ( /wwwroot/A233122/html/cgi-bin/lib );
my $h = HTML::Mason::CGIHandler->new (
data_dir => '/wwwroot/A233122/tmp/mason',
comp_root => $ENV{DOCUMENT_ROOT},
error_mode => 'fatal', # Output to serverlog
);
$h->handle_request;
1;
Ich möchte jedoch verhindern, dass der Mason-Handler direkt aufgerufen werden kann, da er seltsamerweise seinen eigenen Inhalt ausgibt!
Ist mit mod_rewrite sowas möglich - ich habe es jedenfalls nicht hinbekommen?
Wenn ich als RewwriteRule folgendes benutze, dann wird der Aufruf des Mason-Wrappers nicht erlaubt.
RewriteCond %{REQUEST_URI} mason_handler.pl$
RewriteRule ".*" - [F]
Gut.
Wie verhindere ich folgende "direkten" Aufrufe?
/cgi-bin/mason_handler.pl/test/t.mhtml
Aufrufe wie /test/t.mhtml sollen nämlich erlaubt sein.
Intern macht der Apache doch durch das Action aus /test/t.mhtml den Request /cgi-bin/mason_handler.pl/test/t.mhtml\n\n
<!--EDIT|GwenDragon|1107802198-->