繁体   English   中英

为什么此mod_rewrite规则无法按记录工作?

[英]Why isn't this mod_rewrite rule working as documented?

我正在尝试调试托管站点上的URL重写,在该站点上我无权访问vhost.conf ,因此无法设置重写日志。 我还能如何调试不起作用的规则?

如果有人有任何见识,这就是我要理顺的规则:

RewriteRule ^([^/]+)\.([^/]+)$ xslt.php [L]

我期望发生的事情:具有点但没有斜杠的URL被重写以指向xslt.php ,然后停止重写,以免它陷入循环。 实际发生了什么? 500内部服务器错误(这闻起来像它循环)。 我知道我可以添加一个RewriteCond来专门排除xslt.php ,但是我更愿意理解为什么这首先被打破了。

为什么不循环? xslt.php有点但没有斜杠。 尝试将选项更改为[L,NS]。

编辑:啊,我明白了。 您缺少的是[L]终止了此请求的所有重写,但是仍然生成了一个子请求,该子请求获得了自己的重写过程。 [NS]禁止通过。

L标志会导致使用新的重写URL xslt.php 重新开始重写过程 ,然后您的模式也将其匹配。

所以试试这个:

RewriteCond $0 !^xslt\.php$
RewriteRule ^([^/]+)\.([^/]+)$ xslt.php [L]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM