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"