【问题标题】:.htaccess > 4 urls with same page (will google index all?).htaccess > 4 个具有相同页面的网址(谷歌会全部索引吗?)
【发布时间】:2012-06-17 12:02:31
【问题描述】:

我现在有 4 个来自同一个文件的网址:

所有这些链接都有效..

我的 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 将所有其他 url 重定向到这个?

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

【问题讨论】:

  • 只有在某些页面链接它们时,Google 才会索引所有这些 url。
  • @PierpaoloBagnasco 所以,如果我只在我的网站上使用第 4 个 url,google 不会索引前 3 个 url?
  • 没错!谷歌(或其他爬虫)不知道你的文件......在这种情况下,谷歌无法知道有一个名为 Pictures.php 的文件/页面,除非你在某个页面上链接它。

标签: php .htaccess redirect url-rewriting


【解决方案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。第一个重定向带有空格的 URI 以替换为破折号(一次一个),第二个查找对 profile.php 的请求并重定向到 URI 的 SEO 友好版本。在客户端获得 301 重定向后,您的规则将在内部重写回 picture.php。

由于 301 重定向,Google 为前 3 个 URI 提供的任何链接最终都会映射到第 4 个。

【讨论】:

  • 非常感谢!,这对我有用,唯一的问题是如果我是变量:Kim Kardashian Bikini,它会像这样重定向我:kim%2520kardashian-bikini。是否有修复该 2 的代码?
  • @Ibra038 我在第一条规则中添加了NE 标志,它可以防止% 被编码。
  • @JohLin,它没有用,但没关系,我很满意!再次感谢!
猜你喜欢
  • 1970-01-01
  • 2013-06-22
  • 2014-10-22
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 2017-11-13
  • 1970-01-01
  • 2011-04-07
相关资源
最近更新 更多