如何从 .htaccess 中回显?

如何从 .htaccess 中回显?

我们向 htaccess 编写了大量代码,但除了刷新页面之外,最好的调试方法是什么?

有什么方法可以将其写入文件吗?或者是否有一些回显/打印功能?

简单地说,我怎么知道我的 $1 $2 $3 是多少?

答案1

您可以尝试博客文章中提到的方法 调试 mod_rewrite 的几种方法Wayback机器复制):


基本上,您要做的是将 mod_rewrite 正在使用的一些信息转储到标题中,然后使用 Firefox 中的 Firebug 或 LiveHTTP Headers 扩展来查看标题并读取您的调试信息。

在 .htaccess 中使用条件和规则:

RewriteCond %{QUERY_STRING} !vardump
RewriteRule (.*) http://www.example.com/$1?vardump&thereq=%{THE_REQUEST}&reqhost=%{HTTP_HOST} [R=302,L,QSA]

答案2

尝试这些:

RewriteLog "/myfolder/mylogfile.log" 
RewriteLogLevel 3

这些只是带有一些附加功能的正则表达式,因此您可以使用正则表达式教练用于针对 URL 或任何其他 Regex 调试工具的初步测试。

干杯!:)

答案3

这是一个有趣的小技巧,可以从 .htaccess 文件中“回显”变量。

如果你有允许覆盖设置为 FileInfo 您可以设置并触发自定义错误响应在您的 .htaccess 文件中,输出所需的变量:

ErrorDocument 404 "Request: %{THE_REQUEST} Referrer: %{HTTP_REFERER} Host: %{HTTP_HOST}"
RewriteRule ^ - [L,R=404]

取决于你的创造力表达式你可以输出相当多有用的信息!

您不仅限于在“回显”内容上使用 404 状态。您甚至可以覆盖状态 200“ErrorDocument”——结合<If>指令,此 hack 可以实现其他一些非常有趣的用途,直接从 .htaccess 文件返回内容。

答案4

调试重写规则的最佳方法可能根本不使用重写规则,而是将 URL 处理从 htaccess 文件推迟到 PHP 文件(我们称之为 router.php)。然后,您可以使用 PHP 进行任何您喜欢的操作,并进行适当的错误检测和常规调试。由于您不必使用重写模块,因此运行速度甚至更快。

要立即将控制权从 .htaccess 转移到 router.php,只需在 .htaccess 中输入以下行:

FallbackResource router.php

是的,就是这么简单。而且确实有效。试试看。请注意,您可能必须在 router.php 中处理一些错误情况,而不是依赖 ErrorDocument 指令。

相关内容