在.htaccess的最后一次斜杠后获取最后一个元素

时间:2011-03-22 16:24:12

标签: .htaccess mod-rewrite apache2

假设有一个像http://domain.com/aaaa/bbb/ccc/ddd

这样的字符串

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

我正在使用:

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

但它仅适用于斜杠。

2 个答案:

答案 0 :(得分:2)

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

尝试:

RewriteRule ([^/]+)/?$ ?pt=$1 [L]

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

修改

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

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

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

答案 1 :(得分:0)

有效:

RewriteEngine On
RewriteRule ^([A-Za-z0-9]+)$ /index.php?content=$1 [L]

它将更改以下网址:

http://example.com/anypage

进入

http://example.com/index.php?content=anypage

但它会覆盖所有内容并忽略参数。因此,最好是 添加额外的限制。