这是我的.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指令确保我有无扩展名文件,但这可能吗? (在我的第一个例子中,上面的符号是否为通配符?)
由于
答案 0 :(得分:11)
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。
答案 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