如何从.htaccess中回显?


13

我们为htaccess写了很多代码,但是除了刷新页面之外,调试的最佳方法是什么?

有什么办法可以将其写到文件中?还是有一些回声/打印功能?

我只是怎么知道我的$ 1 $ 2 $ 3是什么?

Answers:


8

您可以尝试博客文章《调试的几种方法》中提到的方法 mod_rewrite


基本上,您要做的就是将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=301,L,QSA]

我建议进行302重定向,以避免在完成测试后浏览器出现缓存301的麻烦。
IPSUS

9

试试这些:

RewriteLog "/myfolder/mylogfile.log" 
RewriteLogLevel 3

这些只是带有一些附加内容的正则表达式,因此您可以使用Regex Coach对URL或任何其他Regex调试工具进行初始测试。

干杯! :)


这是非常有用的工具,但请记住在调试后将其删除,因为这样可以获得大量的日志文件!
合作社

6
显然,这在.htaccess文件中不起作用。它必须进入,httpd.conf这意味着在共享主机帐户上通常无法实现。:-(
Simon East

2

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

如果将AllowOverride设置为FileInfo,则可以在.htaccess文件中设置并触发自定义错误响应,并在输出中包含所需的变量:

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

根据您对表达式的创造性程度,您可以输出大量有用的信息!

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.