.htaccess>有同一页面的4个网址(将谷歌索引全部?)

时间:2012-06-17 12:02:32

标签: php .htaccess redirect url-rewriting

我现在有4个url来自同一个文件:

所有这些链接都有效..

我的htaccess:

RewriteEngine On
RewriteRule ^picture/([^/]*)$ /picture.php?name=$1 [L]

在我的php文件之上(用 - 替换空格)

$name  = str_replace('-', ' ', $_GET['name']);
$name  = mysql_escape_string($name);
$pic = mysql_query("SELECT * FROM pics WHERE name = '$name'") or die(mysql_error());

但我只想使用:http://domain.com/picture/kim-kardashian,如何使用htaccess或php将所有其他网址重定向到这个网址?

谷歌会将所有这些网址编入索引,还是仅仅http://domain.com/picture/kim-kardashian

1 个答案:

答案 0 :(得分:1)

之前添加这些规则

RewriteCond %{THE_REQUEST} ^(GET|POST)\ (.*)%20(.*)\ HTTP
RewriteRule . %2-%3 [R=301,NE]

RewriteCond %{THE_REQUEST} ^(GET|POST)\ /picture.php\?
RewriteCond %{QUERY_STRING} ^name=([^&]+)&?(.*)
RewriteRule . /picture/%1?%2 [R=301]

条件与%{THE_REQUEST}匹配,因此我们不匹配重写的URI(就像您的规则重写的那个),并且我们正在匹配实际请求的URI。第一个重定向URI,用空格替换短划线(一次一个),第二个重定向请求profile.php并重定向到SEO友好版本的URI。客户端获得301重定向后,您的规则将在内部重写回picture.php。

由于301重定向,Google对前3个URI的所有链接最终都会映射到第4个。