你可以有任何 URL 结构,只要模式是在 ID 中找到的,而不是在 URL 结构中,这是正常的方法。
在您的问题中,模式可能是 ID 是数字的事实,因此可以从任何包含它的 URL 中捕获它,而不管它的结构如何。例如:
http://example.com/cat1/cat2/ID/cat3
或者
http://example.com/cat2/ID/cat3/cat1
对于在任何位置捕获数字字符串的规则没有区别,例如:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /([\d]+)/?
RewriteRule .* detail.php?pid=%1 [L,QSA]
它会将传入 URL 中的 ID 静默传递给脚本,如下所示:
http://example.com/detail.php?pid=ID
当然,URL 中的 ID 之前不能有任何其他数字字符串。
但是,如果您仍然希望将 ID 固定在 URL 中的最后一个位置,只需将上面的规则集替换为这个:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} .*/([0-9]+)/?$
RewriteRule .* detail.php?pid=%1 [L,QSA]