我有以下重写规则:
RewriteEngine on
RewriteRule ^check/([^\/]+)/?$ check.php?id=$1 [L]
当我去检查/连接////时,check.php将其显示为已连接。但是,根据我对重写规则的理解,如果我向连接添加多个尾部斜杠,则它不应该匹配。
Check.php:
<?php
echo $_GET['id'];
?>
答案 0 :(得分:0)
请注意,在/
中匹配网址正则表达式时,多个/
被精简到单RewriteRule
。这就是你看到这种行为的原因。
如果你想匹配多个/
(比方说2个或更多),你应该使用:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+check/[^/]+/{2,}
答案 1 :(得分:0)
在浏览器和服务器之间的某个地方,连续的斜杠被压缩成一个。毕竟,在引用文件名的正常情况下,一行中有多个斜杠是没有意义的。
出于这个原因,你的.htaccess
只会在最后看到一个斜杠,而不是你实际输入的多少斜杠。这就是你的RewriteRule工作的原因,也是为什么结果只是“连接”而没有任何额外的斜杠。