2

我有以下重写规则:

RewriteEngine on  
RewriteRule ^check/([^\/]+)/?$ check.php?id=$1 [L]

当我去 check/connected//// 时,check.php 将其显示为已连接。但是,根据我对重写规则的理解,如果我在连接后添加超过 1 个斜杠,它不应该匹配。

检查.php:

<?php
echo $_GET['id'];
?>
4

2 回答 2

0

请注意/在匹配. 这就是您看到这种行为的原因。/RewriteRule

如果你想匹配多个/(比如说 2 个或更多),那么你应该使用:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+check/[^/]+/{2,}
于 2013-09-23T13:39:53.017 回答
0

在浏览器和服务器之间的某个地方,连续的斜线被压缩成一个。毕竟,在引用文件名的正常情况下,连续有多个斜线是没有意义的。

出于这个原因,你.htaccess只看到一个斜线,就在最后,而不是你实际输入的多少。这就是您的 RewriteRule 有效的原因,也是结果只是“连接”而没有任何额外斜线的原因。

于 2013-09-23T13:39:55.253 回答