我的 .htaccess 文件设置如下:
Header set MyHeader "I'm Set!"
Run Code Online (Sandbox Code Playgroud)
如果我转到http://example.com/test/
没有默认索引文件的目录 ( ) 并查看网络活动(在这种情况下使用 Chrome),我可以看到正在发送标头。如果我转到 php 文件 ( http://example.com/test/test.php
),则不会发送标头。
我创建了一个 index.html(仅<pre>Hi
作为内容)并被发送。我将文件名更改为.php
,没有标题。如果我将原始文件更改test.php
为test.html
,它会输出看起来很垃圾的代码,并发送标头。如果我更改test.php
为test.png
,我会得到一个损坏的图像图标,并发送标题。
因此,如果没有在 mime 类型和文件扩展名方面进行上述测试,那么似乎只有.php
文件(合法或其他)被设置为不适用 .htaccess 规则或特别是 mod_headers 指令。但我不知道如何对此进行测试,而且因为它是一个共享服务器,所以我无权httpd.conf
四处闲逛。
关于为什么 apache 会跳过为 php 文件发送标头的任何想法?
我也试过:
<FilesMatch "\.(php)$">
Header set MyHeader "I'm Set!"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud) 我创建了一个名为“rewrite”的测试目录,并.htaccess
在其中放置了一个带有重写规则的文件。
当我通过浏览器访问该 URL 时,出现 500 内部服务器错误。
所以我认为这是我的重写语法并尝试了一些更改,同样的事情。然后我在每一行用 # 注释掉所有内容。一样。
然后我注意到该目录没有显示在其父目录中(没有索引文件)。
然后我尝试将文件名更改为.htaccess_bad
,并且目录显示出来。
然后我把它改回 .htaccess 并清空文件,所以它是一个空白文件。目录仍然显示。
最后我在 .htaccess 文件中添加了一个 #,中提琴,目录再次消失。
我虽然问题可能是父目录有一个 .htaccess 文件,在其重写规则上带有 [R] 标志,但删除它并没有解决问题。
关于下一步尝试什么或为什么会发生这种情况的任何帮助?
即使换行也会引起问题。(所以它看起来必须是真的空的)。