使用 .htaccess 获取最后一个斜杠后的最后一个元素

ede*_*ado 1 .htaccess mod-rewrite apache2

假设像http://domain.com/aaaa/bbb/ccc/ddd这样的字符串

我想使用 .htaccess 文件获取最后一个元素,在本例中为 ddd。

我在用:

RewriteRule (.*)/$ ?pt=$1 [L]

但它仅适用于尾部斜杠。

And*_*rew 5

那是因为您的正则表达式包含尾部斜杠。

尝试:

RewriteRule ([^/]+)/?$ ?pt=$1 [L]
Run Code Online (Sandbox Code Playgroud)

斜杠后面的问号表示“零或一”。如果您不希望出现这种行为,请相应地更改正则表达式。

编辑:

由于重写指令将在重写完成后重新运行(至少在每个目录上下文中),因此确保在已实现所需重写后不会重新运行规则非常重要。有多种方法可以实现这一目标,但其中一种是:

RewriteCond %{QUERY_STRING} !pt
RewriteRule ([^/]+)/?$ ?pt=$1 [L]
Run Code Online (Sandbox Code Playgroud)

的目的RewriteCond是防止RewriteRule当某处已经存在查询字符串时应用pt,这将是重写已经发生的线索。更复杂的规则可能需要更多或不同的RewriteCond指令。