为啥 ?XDEBUG_PROFILE=true 被 mod_rewrite 忽略?

Posted

技术标签:

【中文标题】为啥 ?XDEBUG_PROFILE=true 被 mod_rewrite 忽略?【英文标题】:Why is ?XDEBUG_PROFILE=true being ignored by mod_rewrite?为什么 ?XDEBUG_PROFILE=true 被 mod_rewrite 忽略? 【发布时间】:2011-08-17 14:08:01 【问题描述】:

我已将 xdebug 安装到我的 php 中,并希望在 url 字符串中使用 ?XDEBUG_PROFILE=true 来执行分析器。但是,当我尝试使用具有带有查询字符串的 mod_rewrite RewriteRule 的 url 执行此操作时,它不会配置文件。示例:

RewriteRule ^page/(.*)/last$       page.php?pageid=$1 [L]

实现此功能的最佳方法是什么?

【问题讨论】:

【参考方案1】:

您需要添加[QSA] 标志以将任何查询字符串附加到重写。

RewriteRule ^page/(.*)/last$       page.php?pageid=$1 [L,QSA]

只允许XDEBUG_PROFILE:

RewriteCond %QUERY_STRING ^XDEBUG_PROFILE
RewriteRule ^page/(.*)/last$       page.php?pageid=$1&XDEBUG_PROFILE=1 [L]

# Other requests go through as normal
RewriteRule ^page/(.*)/last$       page.php?pageid=$1 [L]

【讨论】:

谢谢,但我不太喜欢它的声音。这是否意味着任何人都可以将任何查询字符串传递给我的脚本?从而向黑客开放了 GET 变量。 @David 然后试试我刚刚添加的内容。不允许任何查询参数,但 XDEBUG_PROFILE 是。在任何情况下,您都可以在完成分析后删除 QSA,因为无论如何您都应该在生产中禁用 xdebug。 @david:没有什么能阻止某人在他们的地址栏中输入example.com/yourscript?hahah=im_in_url_url&adding=stuffz

以上是关于为啥 ?XDEBUG_PROFILE=true 被 mod_rewrite 忽略?的主要内容,如果未能解决你的问题,请参考以下文章