我现在有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?
答案 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个。