如何调试 htaccess 重写脚本

发布于 2024-12-09 19:35:42 字数 125 浏览 1 评论 0原文

我想知道如何创建和调试这种脚本,如果您不习惯编写它们(像我一样),那么它可能会变得有点令人头痛。

你使用工具来创建它们吗?

有什么技巧可以调试正在发生的事情,而不只是创建本地结构并查看浏览器中发生了什么?

I was wondering how to create and debug this kind of script that can become a bit of headache if you are not used to write them (like me).

Do you use tool to create them?

Any tips to debug what's going on instead of just create a local structure and see what's happening in the browser?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏末 2024-12-16 19:35:42

读者请注意:旧答案不再有效

从版本 2.4 开始,Apache 不再允许使用 RewriteLogLevelRewriteLog 指令。现在它们都与单个 LogLevel 指令捆绑在一起(请参阅 Log Files 文档),它支持带有前缀和 trace[1-8] 常量的模块特定日志级别。要专门为重写模块设置最高级别的日志记录,您现在可以使用以下命令:

LogLevel warn rewrite:trace8

Note to readers: the old answer doesn't work anymore.

As of version 2.4, Apache no longer allows the RewriteLogLevel and RewriteLog directives. Now they're all bundled with the single LogLevel directive (see Log Files documentation), which supports module-specific log levels with prefixes and trace[1-8] constants. To set the highest level of logging specifically for the rewrite module, you now use the following:

LogLevel warn rewrite:trace8
来世叙缘 2024-12-16 19:35:42
  1. 您可以使用任何正则表达式测试工具来帮助您根据 URL 测试模式(我正在使用“The Regex Coach”——Windows 应用程序)。这只会对您的模式有所帮助——您应该已经知道重写如何工作的一般逻辑/流程。

  2. 调试,您必须能够编辑 Apache 配置文件 - 使用 RewriteLogLevel 9RewriteLog /path/to/rewrite.log查看 URL 重写期间发生的情况的确切详细信息(因为它是服务器配置,您必须重新启动 Apache 才能应用新的服务器配置)。

    如果您想要调试有问题的规则,则需要9级。 3 级或任何其他相当低的值只会向您显示正在发生的情况的概述,而不会详细说明。

    不要在繁忙/生产服务器上使用级别 9,因为它可能会在几秒钟内生成大量日志。

  3. 如果您需要执行 301(永久)重定向 - 在测试期间执行 302(直到您对规则和结果感到满意 - 然后更改为 301),因为现代浏览器会缓存 301 重定向.. 所以您当您完全更改规则(甚至删除它)但浏览器仍然执行重定向时,可能会陷入令人沮丧的情况。在这种情况下,唯一的解决方法是: -- 清除浏览器缓存并重新加载页面。

  1. You can use any regex testing tool to help you testing your patterns against URLs (I'm using "The Regex Coach" -- Windows app). This will only help you with pattern -- you should already know the general logic / flow of how rewrite works.

  2. To DEBUG you must be able to edit Apache config file -- use RewriteLogLevel 9 and RewriteLog /path/to/rewrite.log to see exact details on what is going on during URL rewriting (because it's a server config you will have to restart Apache to have new server config applied).

    You need level 9 if you want to debug problematic rule. Level 3 or any other pretty low value will only show you overview on what is going on without going into details.

    Do not use level 9 on busy/production server as it may generate huge log within few seconds.

  3. If you need to do 301 (permanent) redirects -- do 302 instead during a testing period (until you are happy with the rule and results -- then change to 301) as modern browsers do cache 301 redirects .. so you may end up in frustrating situation when you have completely changed the rule (or even deleted it) but browser still does the redirects. The only cure in such cases: -- clear the browser cache and reload the page.

原野 2024-12-16 19:35:42

您可以在虚拟主机配置中设置 RewriteLog 指令
它将把必要的信息写入您指定的文件中。

RewriteLog "/usr/local/var/apache/logs/rewrite.log"

此外,使用 RewriteLogLevel 指令来控制日志记录量

RewriteLogLevel 3

通读

You can set RewriteLog directive in your virtualhost configuration
It will write necessary info to the file specified by you.

RewriteLog "/usr/local/var/apache/logs/rewrite.log"

Further, use RewriteLogLevel directive to control the amount of logging

RewriteLogLevel 3

read through

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文