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

whi*_*e86 7 php apache .htaccess

这是我的.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>
Run Code Online (Sandbox Code Playgroud)

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

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

以前我这样做过:

<Files testing1>
ForceType application/x-httpd-php
SetHandler application/x-httpd-php
</Files>
Run Code Online (Sandbox Code Playgroud)

但是为每个无扩展文件做这件事都变得乏味了.

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

谢谢

Tig*_*ger 11

DefaultType已在Apache 2.4中删除.您最好的选择如下:

<Files *>
    ForceType application/x-httpd-php
</Files>
<Files *\.*>
    ForceType None
</Files>
Run Code Online (Sandbox Code Playgroud)

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

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

  • 请记住,如果您的站点具有用户可以上传文件的功能,那么它可能会导致用户上传的文件以 PHP 的形式执行,然后您知道... BOOOOOM。 (2认同)
  • 没错,但将其作为警告作为答案可能不是坏主意,因为我们知道很少有人会继续复制粘贴它。 (2认同)

小智 -1

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

来源:

添加:默认类型应用程序/八位字节流

如果存在则删除:DefaultType text/plain

重新启动阿帕奇

(2)启用mime_magic

资料来源:

启用 mime_magic $ sudo a2enmod -> mime_magic

$ sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)

禁用模块:

$ sudo a2dismod
-> mime_magic
$ sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)