2011-07-19 44 views
2

我现在有一个页面没有任何一个扩展的Movable Type博客HTML ...所以example.com/entries/this-is-my-entryPHP在没有文件扩展名

我加DefaultType text/html如此Apache知道是否没有扩展名的文件末尾显示为HTML。这很好。

现在的问题是我有PHP代码在HTML中。如果没有扩展名,页面将不会呈现php代码。但是,当我发布带有.html扩展名的条目时......这些php完美无缺。

我有AddHandler php5-script .html告诉apache在html文件中显示php。我猜如果没有文件扩展名,它不知道要渲染的PHP,因为它期望扩展名为.html的文件...有没有办法说任何没有扩展名的文件可以使用PHP ?

+2

您应该_always_向文件添加扩展名。如果您想要省略扩展名的网址,请使用'mod_rewrite'。 – KingCrunch

+1

@KingCrunch为什么文件没有扩展名是不好的?缺点是什么?根据[W3C](http://www.w3.org/Provider/Style/URI):“省略什么 - 文件扩展名。这是一个很常见的问题。 “cgi”,甚至“.html”都会改变。 20年后,您可能不会使用该网页的HTML,但您可能希望今天的链接仍然有效。链接到W3C网站的规范方式不使用扩展名。(当然,他们仍然可以谈论使用重写,但保留实际文件名称的扩展名)。 – chown

+0

@chown我说的是(物理)文件,而不是浏览器地址栏中显示的内容。 – KingCrunch

回答

0

没有什么直接对应DefaultTypeAddHandler是的,但你可以在一个相当丑陋的方式围绕它破解:

<FilesMatch "^(?!.*\..+)"> 
    SetHandler php5-script 
</FilesMatch> 
1

也许你可以尝试使用<FileMatch>指令?类似于

<FilesMatch "^[^\.]$"> 
    ForceType application/x-httpd-php 
</FilesMatch> 
+1

这只会匹配名称由单个字符组成的文件(如果该字符不是'.')。添加一个'+'来匹配没有句点的可变长度的文件名,如下所示:'^[^ \。] + $“>' – chown

4

我正在为我的个人MT博客做相同的实现,条目没有文件扩展名。

:(该理论是,我可以切换到在未来的其他技术不被喜欢的.html,.PHP等扩展受到阻碍)

您可以通过设置您的默认类型为PHP实现这一目标DefaultType application/x-httpd-php

所有的PHP文件最初都被解释为HTML,所以即使对于没有PHP的文件也可以。