我正在尝试在托管网站上调试网址重写,我无法访问vhost.conf
,因此无法设置重写日志。我怎样才能调试不起作用的规则?
如果有人有任何见解,这是我正在努力理顺的规则:
RewriteRule ^([^/]+)\.([^/]+)$ xslt.php [L]
我期望发生的事情:有点但没有斜线的URL可以重写为指向xslt.php
,然后停止重写,这样它就不会进入循环。究竟发生了什么? 500内部服务器错误(闻起来像 循环)。我知道我可以添加RewriteCond
来专门排除xslt.php
,但我更愿意理解为什么这会先破坏。
答案 0 :(得分:3)
为什么不循环? xslt.php有点但没有斜线。尝试将选项更改为[L,NS]。
编辑:啊,我明白了。你缺少的是[L]终止了对这个请求的所有重写,但是仍然会生成一个获得自己的重写传递的子请求。 [NS]禁止通过。答案 1 :(得分:0)
L
flag causes a restart of the rewrite process使用新的重写网址xslt.php
,然后您的模式也会匹配。
所以试试这个:
RewriteCond $0 !^xslt\.php$
RewriteRule ^([^/]+)\.([^/]+)$ xslt.php [L]