apache2允许访问子目录

时间:2014-01-03 06:39:56

标签: django wordpress apache2 passenger

我目前正在使用Passenger在Dreamhost上运行Django站点。我想在'public'目录中运行一个Wordpress博客,该目录中包含我的静态文件(我认为它应该存在)。由于Django目前拥有所有/ *,我被告知我需要在我的apache2服务器的httpd.conf中添加一个Location条目。我尝试了位置和目录,无法让它们工作。下面的代码片段基本上就是我用不同方式输入的内容。

<Directory /home/user/domain/public/blog/>
Order allow,deny
allow from all
</Directory>

我还尝试添加AllowOverride All来尝试捕获博客文件夹中的htaccess文件,但没有骰子。我是非常新的搞乱apache(第一次),任何人都可以指出我正确的方向来获取/博客/显示wordpress网站而不是404页面。

2 个答案:

答案 0 :(得分:3)

尝试添加Apache Alias指令:

Alias /blog/  /home/user/domain/public/blog/

“别名”将与你的“目录”指令一起使用。

注意:我在wsgi配置之前列出了这些,将django加载到apache中。 (我不知道这是否重要,但也可能。)

修改 在我的主要httpd。 conf文件我

LoadModule wsgi_module modules/mod_wsgi.so

我认为那里有'DocumentRoot'和'Directory'指令。

下一步:在我的虚拟主机中

<VirtualHost *:80>
Alias /blog/  /home/user/domain/public/blog/

<FilesMatch \.(?i:gif|jpe?g|png|ico)$>
  Order allow,deny
  allow from all
</FilesMatch>

<FilesMatch \.(?i:css|jst|js|txt|htm|html)$>
  Options Indexes FollowSymLinks MultiViews
  Order allow,deny
  allow from all
</FilesMatch>

<Directory /home/user/domain/public/blog/>
   Order allow,deny
   allow from all
</Directory>

也许我的FilesMatch指令实际上是在做魔术(我之前可能已经错过了)

<强>调试 如果你不能这样做,你可能想在apache中启用更详细的httpd日志输出,看看你是否可以告诉你它不满意。 你可以通过将'LogLevel'指令从'warn'更改为debug

来实现
LogLevel debug

现在

tail -f /path/to/you/apache/error_logs

答案 1 :(得分:1)

我的问题的关键是确定如何覆盖Passenger,这就是运行Django应用程序的原因。访问您的httpd.conf文件。在主Virtualhost部分(定义域以及如何处理公用文件夹的部分)中放置此代码以覆盖Passenger和Django对/ *目录的控制。

Alias /blog /home/user/domain/public/blog

<Directory /home/user/domain/public/blog>
PassengerEnabled off
AllowOverride all
Order Deny,Allow
Allow from all
</Directory>

添加PassengerEnabled off可以处理Passenger,并允许在Django应用程序之外提供目录。我不认为AllowOverride或Allow from all会做很多事情,但我把它留在了安全的地方。现在工作得很好。