如何在htaccess中删除尾随URL字符

时间:2011-07-22 08:19:02

标签: .htaccess

我希望有人能帮忙解决这个问题。我运行一个用Perl编写的论坛,论坛对URL做了一些事情,导致搜索引擎创建重复项。

我认为处理此问题的最佳方法是在htaccess级别对其进行排序。

例如,以下4个URL都转到同一页面,但搜索引擎看到一个条目有三个重复:

http://www.domain.com/forum/YaBB.pl?num=1234567890
http://www.domain.com/forum/YaBB.pl?num=1234567890/2
http://www.domain.com/forum/YaBB.pl?num=1234567890/19
http://www.domain.com/forum/YaBB.pl?num=1234567890/22

我正在寻找htaccess将最后三个字符中包含正斜杠的任何内容重定向到一个删除了斜杠和尾随数字的URL。使用上面的例子:

Redirect 301 /forum/YaBB.pl?num=1234567890/2 to /forum/YaBB.pl?num=1234567890

或者,从该子域重写URL以去除“/ n”和“/ nn”

有人有什么想法吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

RewriteEngine On
RewriteBase /
RewriteRule ^cgi-bin/forum/YaBB\.pl\?num=([0-9]+)/[0-9]+$ cgi-bin/forum/YaBB.pl?num=$1 [R=302,L]

这应该有效,但如果没有,请告诉我:)如果它有效,将'R = 302'更改为'R = 301'

答案 1 :(得分:0)

尝试此规则:

Options +FollowSymLinks +SymLinksIfOwnerMatch

RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^num=(\d+)/
RewriteRule ^(cgi-bin/forum/YaBB\.pl)$ /$1?num=%1 [R=301,L] 

在本地Apache安装上测试 - 对我来说很好。