重写之后“index.php”来自哪里?

时间:2015-03-28 10:32:17

标签: apache .htaccess

我在htaccess中添加了以下代码:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?:.+/)?(\d+)/?$ ?id=$1 [L,QSA]

" L" -flag应该阻止任何即将出台的规则适用,所以我不明白为什么这个网址

  

www.domain.com/a/b/c/d/123

被重写为

  

www.domain.com/index.php?id=123

我相信你们中的一些人可以启发我!

1 个答案:

答案 0 :(得分:0)

您的模式是:

^(?:.+/)?(\d+)/?$

在第一个非捕获组中匹配/a/b/c/d,在捕获的组#1中捕获123

目标是?id=$1,它将网址重写为?id=123

由于index.php指令,DirectoryIndex是默认目录索引,因此它正在调用index.php?id=123