我在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
我相信你们中的一些人可以启发我!
答案 0 :(得分:0)
您的模式是:
^(?:.+/)?(\d+)/?$
在第一个非捕获组中匹配/a/b/c/d
,在捕获的组#1中捕获123
。
目标是?id=$1
,它将网址重写为?id=123
。
由于index.php
指令,DirectoryIndex
是默认目录索引,因此它正在调用index.php?id=123
。