2011-01-28 81 views
0

我正在使用Lighttpd和Django。我配置了我的Lighttpd服務器,將所有以「.psp」擴展名結尾的請求傳遞給Django。如何將Web服務器配置爲將特定頁面作爲默認頁面進行服務?

我的啓動頁面是通過Django提供的頁面,它以「http://192.168.1.198/home.psp」的形式訪問。我想讓用戶瀏覽這個頁面,而不用在URL中明確寫入「home.psp」,即使用「http://192.168.1.198」

這可能嗎?

感謝您提前提供任何幫助。

+0

您可以將`/`重定向到`/ home.psp`。或者代理`/`到`/ home.psp`(更難),或者改變django從`/`服務根頁面,強制lighttpd通過轉發`^ $`或`。* \。psp`到django。只是在我入睡之前有一些想法。 GL! – 2011-01-28 08:10:03

+0

爲什麼你配置服務器首先將`Django頁面作爲`.psp`? Django不是PSP,並且不需要任何特定的擴展。 – 2011-01-28 09:08:41

回答

0

我自己解決了這個問題。下面是我做的:

我不得不添加里面像lighttpd的配置文件的url.rewrite-once塊聲明:

url.rewrite-once = (
     "^(/media.*)$" => "$1", 
     "^(/static.*)$" => "$1", 
     "^/favicon\.ico$" => "/media/favicon.ico", 
     "^(/)$" => "/my_project_dir/home.psp", 
     "^(/.*)$" => "/my_project_dir$1", 
    ) 
從這個

除此之外,我加入我的urls.py以下行:

(r'^$',my_index_view_name), 

希望這可以幫助未來的人。感謝大家以上的回覆。乾杯!

1

我認爲你在使用單獨文件表示網頁的「舊」方法之間存在混淆概念,這些網頁本身包含的代碼會在響應django/frameworks的工作方式發送之前傳遞給解釋器。

如果你對apache很熟悉,可以把django想象成mod_rewrite角色的一部分。 Django和其他框架具有所謂的調度器或路由機制。

基本上,他們訂閱的MVC模式,說你應該分開模型,控制器和視圖(在Django的說法,模型,模板和視圖)。

現在接下來會發生的是,您在django中有一個名爲urls.py的文件,其中包含處理它們的路徑列表(url)和方法名稱(通常包含在views.py中)。下面是一個例子:

urlpatterns = patterns('', 
    url(r'^dologin$',  'testapp.views.auth_login',   name="auth-login-uri"), 
    url(r'^doopenidlogin$', 'testapp.views.auth_openid_login', name="auth-openid-login-uri"), 
    url(r'^dologout$',  'testapp.views.auth_logout',  name="auth-logout-uri"), 
    url(r'^login$',   'testapp.views.loginform',   name="login-form"), 
    url(r'^openidlogin$', 'testapp.views.openidloginform', name="openid-login-form"), 
    url(r'^$',    'testapp.views.index',    name="index"), 
) 

這裏testapp是一個Python包,views.py是一個python文件和index是Django視圖。該網址是由正則表達式構建的,所以我可以擁有任何我想要的url,更多的是構建stackoverflow網址。

所以基本上,你再也不需要文件擴展名了。我強烈建議在django上寫一本好書 - 周圍有幾本。

0

您可能正在尋找的是Lighty配置文件中的index-file.names指令。只需將「home.psp」添加到配置文件中的列表中,Lighty將在未指定文件名時查找它。

相關問題