RewriteRule statt AliasMatch

Alles, was den Apache betrifft, kann hier besprochen werden.

RewriteRule statt AliasMatch

Postby ollo » 28. March 2009 19:19

Hallo zusammen, folgendes Problem:

Ich nutze bisher VHosts um alle Anfragen auf eine bzw. mehrere Domains durch ein Skript zu routen:
Code: Select all
<Directory "X:/!EigeneDateien/foo/bar">
   Options Indexes MultiViews +FollowSymLinks
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

<VirtualHost *:80>
   ServerName foo.localhost
   ServerAlias bar.localhost
   ServerAlias test.foo
   ServerAlias test.bar
   DocumentRoot "X:/!EigeneDateien/foo/bar"
   AliasMatch ^/(.*) "X:/!EigeneDateien/foo/bar/handler.php"
</VirtualHost>


Das tue ich, weil die aufgerufenen URLs abhängig von Teilen der URL (Host + Anfang des Path) eine völlig unterschiedliche Semantik haben können, bspw.:
- test.foo/{OBJECTID}/{VIEW}/{ACTION}
- test.foo/theme/{THEMEID}/{FILE_PATH_RELATIVE_TO_THEME_DIR}
- test.bar/play/{OBJECTID}/{PLAYBACKTOKEN}/some_fake_filename.mp3
- foo.localhost/{PATH_TO_VIRTUAL_FILE_IN_DATABASE_TREE}

Das hat derzeit den Nachteil, dass man Zugriff auf die Apache-Config haben muss um die Instanzen einzurichten. Ich möchte das jetzt über mod_rewrite nachbilden, so dass man (prinzipiell) nur die Sourcen incl. .htaccess in ein Verzeichnis legen muss und wie bei den meisten PHP-Applikationen üblich direkt über localhost/verzeichnis die Instanzen erreichen kann. Die Semantik soll aber auf jedem Fall im Skript bleiben, ich möchte nur, dass alle Anfragen an http://localhost/foobar/* an das Skript gehen.

Er gibt mir allerdings immer ein Forbidden wenn ich auf das Verzeichnis (bspw. http://localhost/foobar/) oder einen beliebigen 'Inhalt' darin zugreifen will und ich weiß nicht warum, die Suche hier hat auch nicht geholfen. Hier die .htaccess-Datei:

Code: Select all
# http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
# parent dir is stripped from rewriting, engine and option followsymlinks must be enabled

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^.*$ handler.php

php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
php_flag always_populate_raw_post_data on
php_flag output_buffering off
php_flag implicit_flush on
php_flag session.use_cookies on
php_flag session.use_only_cookies on

php_value max_input_time 60
php_value post_max_size 16M
php_value upload_max_filesize 16M
php_value max_execution_time 6000
php_value memory_limit 32M


und die dazugehörige Ergänzung in der httpd.conf:
Code: Select all
Alias /foobar "X:/!EigeneDateien/foo/bar"
ollo
 
Posts: 85
Joined: 11. November 2004 12:29

Return to Apache

Who is online

Users browsing this forum: No registered users and 3 guests