我对 Perl 不太熟悉,当然不是标题,尽管您可以尝试以下...
require HTTP::Headers;
$h = HTTP::Headers->new;
$h->header('Content-Type' => 'application/xhtml+xml');
当然,您需要通过客户端的接受标头检查客户端是否支持 XHTML。请记住,Microsoft 认为 IE7 确实支持. 这与事实相去甚远。
我在我的站点上将 XHTML 作为 application/xhtml+xml 提供并使用 PHP,所以如果你熟悉它和Perl,这可能有助于更容易地桥接它......
if (isset($_SERVER['HTTP_ACCEPT']))
{
if (stristr($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml'))
{
header('Content-Type: application/xhtml+xml');
}
else {header('Content-Type: text/html');}
}
include('file.pl');
尽管您想要良好的结构,但我不确定 Perl 与 PHP 的等价物是什么。
_0_header_0 // 启动包含树的主头文件,可以这么说。
_0_header_1_base // 确定本地/实时服务器的相对和绝对路径,以便完全相同的代码在本地/实时服务器上运行。
_0_header_2_sql // 连接到您的数据库以获取内容。
_0_header_3_sessions // 此时应处理会话,例如登录的成员/管理员/等。
_0_header_4_classes // 在这里建立你的编程类。
_1_functions_date // 站点范围的函数,例如将 Unix Epoch 转换为人类可读的日期,其他函数等...
_2_includes_01_xml // 此时您无法再发送标头。
_2_includes_02_dtd
_2_includes_03_head
_2_includes_04_title
_2_includes_05_meta_0
_2_includes_05_meta_01_description
_2_includes_05_meta_02_keywords
_2_includes_05_meta_03_language
_2_includes_05_meta_04_robots
_2_includes_05_meta_05_redirect
_2_includes_06_base // 使用基本元素设置默认基本路径。
_2_includes_07_css
_2_includes_08_js // 永远不要把 JavaScript 放在 body 元素中,否则你会搞得一团糟。
_2_includes_09_body
...
我也不熟悉 Hypnotoad HTTP 服务器(虽然我得到了 Futurama 参考)。理想情况下,您想做类似于 Apache 重写的操作,并让内容由主处理程序提供服务。本质上,另一个目录中的文件有时会提供内容......没有实际目录,至少对于自定义页面。当您建立模块(例如博客、电子邮件、论坛)后,您只需将主处理程序文件移至该模块。
这是一种通用的方法,我可以花几个小时来了解它,尽管它更多地是作为一个方向。我正在处理包含大量包含的单个文件,并且由于无法快速复制文件夹并说网站已备份等原因,我对数据库之类的东西感到不舒服。只要您有一些良好的备份系统,就可以构建一个新版本这样的方法,并尝试将其分解为更小的版本。当你确实有一个根本不同的方法代码明智时,可以有一个可能需要几个月到一两年才能发布的版本。只需一遍又一遍地改进它,并推动自己达到高标准(例如,XHTML 作为应用程序/xhtml+xml 与 Firefox(因为其他浏览器不会隐藏页面并直接给你错误)。