使用一个 GET 变量创建 mod_rewrite 规则,而不考虑 url 级别

Creating mod_rewrite rule with one GET variable regardless of url-level

我正在尝试让这个场景起作用:

URL: www.domain.com/sub/level/details/123/ 应处理为:www.domain.com/sub/level/?product=123

"sub" 和 "level" 可能会有所不同。它也可以是 /foo/doo/details/1/ 或更多子级别:/foo/bar/foo/bar/foo/details/123/

只有“/details/”后跟 integer/id 的部分没有改变。

我尝试并修改了旧版 TYPO3 安装中的 .htaccess 文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^de/(.*)$  http://test.domain.com/ [R=301,L]

RewriteRule ^typo3$ - [L]
RewriteRule ^typo3/.*$ - [L]
RewriteRule ^uploads/.*$ - [L]
RewriteRule ^fileadmin/.*$ - [L]
RewriteRule ^typo3conf/.*$ - [L]
RewriteRule ^./details/([0-9]+)/$ ?product=

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* /index.php

非常感谢您的支持!

谢谢

您的正则表达式不正确,因为您匹配的是 /detail/ 之前的单个字符。

替换此规则:

RewriteRule ^./details/([0-9]+)/$ ?product=

有了这个:

RewriteRule ^(.+)/details/(\d+)/?$ ?product= [L,NC,QSA]