ForceType / htaccess文件扩展名问题 - 无扩展名文件?

时间:2011-01-19 20:52:17

标签: apache .htaccess php

这是我的.htaccess文件:

<IfModule php4/5.c>
php_admin_flag Option
php_flag Option
php_admin_value Option
php_value Option
</IfModule>  
<Files .>
ForceType application/x-httpd-php
SetHandler application/x-httpd-php
</Files>

上面的代码在某种程度上有效,但我不确定为什么......我期待500错误。我很喜欢.htaccess,但主要用于阻止机器人/蜘蛛等而不是文件类型。该文件的顶部用于自定义php.ini文件(我试图在我自己的Apache服务器上复制,好像我无法访问正确的php.ini文件,就像他们在网络托管公司的网站上一样,只是为了在我的测试网站上添加了真实感。)

虽然我理解如何使用ForceType和SetHandler,但我不知道如何将它用于无扩展文件(例如,如果我有一个名为testing1的文件,我可以将它作为php运行。)

以前我这样做过:

<Files testing1>
ForceType application/x-httpd-php
SetHandler application/x-httpd-php
</Files>

但是为每个无扩展名文件做这件事都很乏味。

基本上,我要做的是通过ForceType / SetHandler指令确保我有无扩展名文件,但这可能吗? (在我的第一个例子中,上面的符号是否为通配符?)

由于

5 个答案:

答案 0 :(得分:11)

Apache 2.4中已删除

DefaultType。您最好的选择如下:

<Files *>
    ForceType application/x-httpd-php
</Files>
<Files *\.*>
    ForceType None
</Files>

这将捕获没有扩展名的所有文件,并将它们作为PHP处理。然后,所有带扩展名的文件都将正常处理。

使用mod_mime_magic不是一个好选择,因为每次都需要检查每个文件。有关详细信息,请参阅mod_mime_magic docs

答案 1 :(得分:4)

对于Apache 2.3及更早版本,只需更改DefaultType,如下所示:

DefaultType text/html

这样,每个未识别的文件(包括没有扩展名的文件)都将被视为HTML。


对于Apache 2.4及更高版本,请参阅Tigger’s answer

答案 2 :(得分:2)

仅限无扩展文件

此解决方案仅影响无扩展,静态提供的文件:( credit Eugene Kerner

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

任何未知内容

这个会影响在没有Content-Type标头的情况下传输的任何响应。换句话说,它模仿旧DefaultType指令的行为:

Header set Content-Type "application/x-httpd-php" "expr=-z %{CONTENT_TYPE}"

应该可以在这里使用setifempty而不是-z表达式。但它失败并覆盖每个响应中的标题,空或不。我不知道为什么。 Eric Covener说这是因为Content-Type标题未添加到“最后一秒”。

仅限旧服务器

升级到2.4后会失败:(参见manual

DefaultType application/x-httpd-php

答案 3 :(得分:0)

我花了很多年时间试图解决类似的问题,其中ForceType和DefaultType在某些页面上不起作用。

我找到了与kbk相同的答案。编辑/etc/httpd/conf/httpd.conf并注释Mime Magic Module的行:

<IfModule mod_mime_magic.c>
#   MIMEMagicFile /usr/share/magic.mime
#    MIMEMagicFile conf/magic
</IfModule>

之后,重启Apache。

您可以在此处找到更多信息:http://realtechtalk.com/HTML_files_in_Apache_still_displaying_as_raw_text_even_with_DefaultType_ForceType_etc-1752-articles

答案 4 :(得分:-1)

(1)修改.htaccess或apache2.conf或httpd.conf

来源:

添加:     DefaultType application / octet-stream

删除(如果存在):     DefaultType text / plain

重启apache

(2)启用mime_magic

来源:

启用mime_magic     $ sudo a2enmod       - &GT; mime_magic

$ sudo /etc/init.d/apache2 restart

禁用模块:

$ sudo a2dismod
-> mime_magic
$ sudo /etc/init.d/apache2 restart