我目前正在使用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页面。
答案 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会做很多事情,但我把它留在了安全的地方。现在工作得很好。