如何在文档根目录之外提供dynamic页面?

我试图build立一个简单的networking应用程序,我有一些困难。

以下是我如何设置:

/srv/www/application <-- python code /srv/www/public_html <-- document root 

我希望Apache可以在public_html中find它,否则将请求发送给我的应用程序。

我的虚拟主机文件的一个片段:

  DocumentRoot /srv/www/public_html <Directory /srv/www/public_html> Options -Indexes RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ../application/code.py/$1 [L] </Directory> 

我真的不知道.. /应用程序,(因为我认为它重写到一个url,而不是一个目录),我怀疑这就是为什么它不工作,但我找不到一个方法,使其工作。

更新

我已经应用了Cakemox的build议,但仍然存在一些问题。 以下是我所做的:

 WSGIScriptAlias / /srv/www/application/code.py 

这条路线一切到我的应用程序。 奇怪的是,它的工作了一会儿,即在public_html内find的文件被送达,其余的被路由到我的应用程序,但我想浏览器的caching玩弄技巧。

我也试过:

 WSGIScriptAlias /application /srv/www/application/code.py <Directory /srv/www/public_html> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ application/$1 [L] </Directory> 

这大部分时间工作,除了默认的url(mydomain.com)列出了我的public_html目录,而不是运行应用程序。 我想这是因为所请求的文件名是/ srv / www / public_html,这是一个目录,所以条件是错误的。 这很奇怪,因为我有很多应用程序运行在这些条件完全正常…

更新2经过近2天的头部砸键盘(我现在可以触摸我的大脑),我想我终于明白了。 我在最后一段提到的“众多应用程序”主要是PHP应用程序,其中应用程序index.php位于public_html文件夹中。 所以浏览mydomain.com,Apache首先search默认索引(DirectoryIndex), 然后再应用任何重写规则。 由于我的public_html文件夹中没有index.php,index.htm或index.html,所以只列出了目录。 所以要解决这个问题,我可以在条件之前添加DirectoryIndex / application或者RewriteRule ^ $ / application。 这是最后的片段:

 <Directory /srv/www/public_html> DirectoryIndex /application RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ application/$1 [L] </Directory> 

谢谢。

别名想到:

 Alias /application "/srv/www/application" 

我通过符号链接始终这样做:

 ln -s /path/to/target localname 

这只适用于目标path在同一分区上的情况。

你也可以使用绑定装载 :

 mount --bind /path/to/orig/dir newdir/path 

并且可以在/etc/fstab 重新启动后保持bind mounts

 /my/real/dir /to/mount/dir auto rw,bind 0 0