我想知道是否可以为 Apache 创建由 PHP 文件处理的自定义文件类型处理。
我想要完成的是创建一种自定义.phps
用于在浏览器中查看代码的扩展。
我正在使用 CodeMirror 来显示代码,但我希望此过程能够自动化,因为我只需更改.php
延伸至.phps
,以及其他一些.php
文件会处理这个.phps
文件,这样我就可以注入它的源代码.phps
使用 CodeMirror 将文件转换为 HTML 文件。
我希望我的目标很明确,我只是想知道这是否可能。
Edit:
澄清一下 - 我想设置此规则从 apache.conf 工作,这意味着它可以在所有虚拟主机等上工作,而不是从.htaccess
需要位于服务器上每个目录中的文件。
我想这应该适用于FilesMatch
在 apache.conf 中,现在这就是我正在修改的内容:
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php
RewriteEngine on
RewriteRule ^(.*)$ /tools/code/?file=$1 [L]
</FilesMatch>
不过我得到了400 Bad Request
错误。我想在这样的基础上构建,以便 Apache 能够处理.phps
文件来自其配置,而不必使用.htaccess
服务器上每个目录中的文件。
这当然是可能的,只需查看文档即可。文件类型处理程序的工作方式有很好的解释,请查看AddType
命令。然而,这是否是实现您所描述的目标(可视化 php 源代码)的好方法是值得怀疑的。使用重写将请求的文件移交给处理程序脚本,该处理程序脚本可以根据您的需要“发布”它,这不是更容易、更优雅吗?
例如,您可以使用如下 URL 并在内部重写它:
/source/path/to/file.php => /path/to/handler.php?source=%2Fpath%2Fto%2Ffile.php
这可以通过 apache 重写模块或在 nginx 中使用通用处理程序脚本来完成:
RewriteEngine on
RewriteRule ^/source/(.)*$ /path/to/handler.php?source=$1 [L,B]
这样您就不必定义某些本地文件类型,并且可以命名要显示的 php 文件,就像它们本身一样:php 文件。我的意思是 php 文件就是 php 文件。文件扩展名应反映文件中包含的内容的类型,而不是应如何处理它。这意味着你混合了不同的逻辑层。
在我看来,这对用户来说更加透明。它还允许对要重写的 URL 进行更细粒度的控制,并且可能在需要时指定一些附加参数。
上述重写规则的两点注意事项:
- 您可能必须启用 Apache
AllowEncodedSlashes
to on
,取决于您现有的服务器设置
- 如果你想在里面使用重写规则,你必须稍微改变语法
.htaccess
样式文件(您必须删除前导斜杠,具体取决于您放置该文件的位置)。但一般来说,应尽可能避免此类文件:众所周知,它们容易出错,难以调试,有时会导致意外的副作用,并且really减慢服务器速度。所以if您可以访问服务器主机配置,您应该更愿意将此类规则放在那里。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)