2009-10-08 76 views
0

我有一個httpd.conf文件看起來像這樣:將httpd.conf遷移到.htaccess?

Alias /robots.txt /var/www/tech_eval/static/robots.txt 
Alias /favicon.ico /var/www/tech_eval/static/favicon.ico 

AliasMatch /([^/]*\.css) /var/www/tech_eval/static/styles/$1 

Alias /media/ /var/www/tech_eval/static/media/ 

<Directory /var/www/tech_eval/static> 
Order deny,allow 
Allow from all 
</Directory> 

WSGIScriptAlias /tech_eval /var/www/tech_eval/scripts/django.wsgi 

<Directory /var/www/tech_eval/scripts> 
Order allow,deny 
Allow from all 
</Directory> 

這工作正常我tech_eval項目,但它開始引起與其他網站的問題。我認爲將所有這些內容移動到位於tech_eval文件夾中的.htaccess文件可能是適當的,以便它不會導致問題。雖然,我不認爲所有這些選項都可以在從.htaccess運行時起作用嗎? 我有什麼選擇?我的意思是,我可以通過在tech_eval之前加上前綴來解決這個問題,但之後我會爲我的所有網站提供一個大的主文件,結果只會變成一團糟。

+0

你在問''.htaccess'版本的行嗎? – random 2009-10-08 06:44:19

+0

你有沒有考慮過使用虛擬主機? – blak3r 2009-10-08 06:44:40

+0

@ e.c.ho:我想,如果這是最好的方法。我認爲'Aliases'可以用'RewriteRules'完成,但我不知道如何處理'WSGIScriptAlias'。 @ blak3r:恩?我一生都在共享服務器上工作,終於對這個有點控制。我想它會被歸類爲* VPS *,但整個事情對我來說是新的:)你必須解釋這一點。 – mpen 2009-10-08 06:53:22

回答

1

這實際上並不太清楚你試圖解決什麼問題。爲什麼你甚至首先使用該配置?看起來你只是從mod_wsgi文檔中複製它,而不理解每個位所做的事情,並在它不適合你的設置時開始使用它。具體來說,mod_wsgi文檔中的示例是一個通用示例,不一定適用於Django。

所以,而不是試圖修復該配置以滿足一些未知的目標,只是描述你需要什麼,並會告訴你什麼是你應該使用的正確配置。


更新1

每低於我的意見,那麼也許使用:

AliasMatch /tech_eval/([^/]*\.css) /var/www/tech_eval/static/styles/$1 

Alias /tech_eval/media/ /var/www/tech_eval/static/media/ 

<Directory /var/www/tech_eval/static> 
Order deny,allow 
Allow from all 
</Directory> 

WSGIScriptAlias /tech_eval /var/www/tech_eval/scripts/django.wsgi 

<Directory /var/www/tech_eval/scripts> 
Order allow,deny 
Allow from all 
</Directory> 

只需溝的robots.txt和favicon.ico的,或至少不從子網址讓他們並將它們直接粘貼到DocumentRoot目錄中,並使用真正用於整個站點的那些目錄。

我認爲它是在'Django設置模塊'ADMIN_MEDIA_PREFIX',然後您需要更改爲'/ tech_eval/media /'。

對於Django,不要以爲你甚至需要CSS別名,那就是它最初是一個通用的例子來展示概念,而不是爲Django正確的東西。

無論如何,一切都在'/ tech_eval'之下,並且不應該干擾同一站點上的其他應用程序。

+0

我沒有從mod_wsgi文檔複製它,我從Django tut複製了它,並且我確切地知道它做了什麼。我有一個名爲'tech_eval'的項目;該配置特定於該項目。我想以某種方式封裝該配置,以便它不影響我的其他項目(因爲在某種意義上'httpd.conf'是「全局的」)。我認爲這應該放在實際的項目文件夾中,但我願意接受其他解決方案。 – mpen 2009-10-08 23:12:05

+0

然後教程從http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting_Of_Static_Files中複製它。我擔心的是,配置會將東西推到網站的根目錄,以便找到位於子網址的內容。是的,這就是最初的例子,但你真的想要嗎?做什麼想要favicon.ico和robots.txt來自該特定的子網站?你想CSS文件被推送到根?因爲Alias/AliasMatch優先於WSGIScriptAlias,所以可以用'/ tech_eval'作爲前綴。只需更改媒體網址根的Django設置即可。 – 2009-10-09 04:45:20

1

使用VirtualHosts來限制這些行的範圍,並且每個虛擬主機包含一個包含組織配置文件並防止它變得笨拙的方法。

+0

呃......那工作怎麼樣?我正在看這個''指令現在......我需要多個IP地址......?說到這裏,我是一個完整的n00b。我最近安裝了'phppgadmin',它看起來像'Alias',它是在'/ etc/apache2/conf.d'中設置的。我能不能爲每個我的網站都有這樣的文件?是那些自動加載? – mpen 2009-10-08 07:11:17

+0

不幸的是,Apache配置文件的組織方式因分佈而異。有時候會讓你瘋了。在你的httpd.conf文件中尋找包含行,可能在底部附近。如果路徑是一個目錄,它將包含該目錄中的所有文件。 – 2009-10-08 13:52:34

+0

您不需要單獨的IP地址用於基於名稱的虛擬主機(http://httpd.apache.org/docs/1.3/vhosts/name-based.html)您需要單獨的域名(或至少是子域名名稱) - 我假設你有因爲「我所有的網站」等短語。 – 2009-10-08 13:55:08