Kohana 2.3 NGINX htaccess like URL rewrite

Um Kohana 2.3 auf NGINX mit sauberen URLs zu konfigurieren geht folgende NGINX server config:

server {
        server_name example.com www.example.com;
        listen   80;

        root /srv/www/example.com/pages/;
        access_log /srv/www/example.com/logs/access.log;
        error_log /srv/www/example.com/logs/error.log;

        index index.php index.html index.htm;

        try_files $uri $uri/ @rewrite;

        location @rewrite {
                rewrite ^/(.*)$ /index.php/$1;
        }

        location ~ \.php {
                fastcgi_index index.php;
                fastcgi_pass 127.0.0.1:9000;

                include fastcgi_params;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param ENV "production";
        }
}

Nachfolgende Slashes mit mod_rewrite entfernen?

Mit diesem kleine Eintrag werden URLs mit einem Slash am Ende auf die gleiche URL ohne Slash am Ende geleitet. In meiner Rails Anwendung verursachten URLs mit einem Slash am Ende einen 403 – Forbidden.


RewriteEngine On
RewriteRule ^(.+)/$  $1 [R=301,L]

HTTP Authentifizierung mit Lighttpd

Um im schlanken Webserver Lighty eine HTTP Authentifizierung für bestimmte Verzeichnisse zu erzeugen, ist es notwendig, in der /etc/lighttpd/lighttpd.conf das Server-Modul mod_access und mod_auth zu aktivieren.


server.modules = (
                    "mod_access",
                    "mod_auth",
                    "mod_alias",
                    "mod_accesslog",
                    "mod_compress",
                    "mod_cgi",
                    "mod_fastcgi",
                    "mod_rewrite",
                    "mod_magnet",
                    "mod_redirect",
                    "mod_status",
                    )

Um ein Verzeichnis unterhalb eines bestehenden Webroots nun mit einer Authentifizierung zu schützen, tragen wir das in der /etc/lighttpd/vhosts.conf ein.


$HTTP["host"] =~ "(^|\.)domain\.tld$" {
        server.document-root = "/home/user/pages/"
        auth.backend = "htpasswd"
        auth.backend.htpasswd.userfile = "/home/user/passwd.txt"
        auth.require = ("/" => (
                                 "method" => "basic",
                                 "realm" => "admin",
                                 "require" => "valid-user"
                                 )
                         )
}

Zu guter Letzt benötigen wir noch die /home/user/passwd.txt die die betreffenden Authentifizierungsinfos bereit hält.


user:basic_encoded_password

Fortan ist der Ordner /home/user/pages/ passwortgeschützt.
Möchte man einen Unterordner passwortschützen, trägt man diesen statt des Slashes ein:


auth.require = ("/subdir/" => (
                                  "method"  => "basic",
                                  "realm"   => "admin",
                                  "require" => "valid-user"
                                  )
            )