如何配置Web服务器以将特定页面作为默认页面服务?

时间:2011-01-28 07:15:25

标签: python django lighttpd

我正在使用Lighttpd和Django。我已将Lighttpd服务器配置为将所有以“.psp”扩展名结尾的请求传递给Django。

我的启动页面是通过Django提供的页面,可以访问“http://192.168.1.198/home.psp”。我想让用户浏览此页面而不在网址中明确写入“home.psp”,即使用“http://192.168.1.198”

这可能吗?

感谢您提前提供任何帮助。

3 个答案:

答案 0 :(得分: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是由正则表达式构造的,因此我可以将任何我想要的内容作为url,以及如何形成stackoverflow url。

基本上,你再也不需要文件扩展名了。我强烈建议你买一本关于django的好书 - 周围有一些。

答案 1 :(得分:0)

您可能正在寻找的是Lighty配置文件中的index-file.names指令。只需将“home.psp”添加到配置文件的列表中,Lighty将在未指定文件名时查找。

答案 2 :(得分: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),

希望这可以帮助将来的某个人。感谢大家的回复。干杯!