【问题标题】:SEO friendly html/ php form submissionSEO 友好的 html/php 表单提交
【发布时间】:2012-03-08 22:40:53
【问题描述】:

我希望在以 html 表单提交过滤器后创建一个 SEO 友好的 URL。

玩了一段时间后,我找到了一种方法,但是我想知道其他人对此有何看法,因为我是开发新手。

我在 .htaccess 文件中添加了一些重写规则,以使 url 更友好。以下示例:

原始网址: site-nane/list.php?brand=brand1&min-price=0&max-price=2000

重写后的网址: 网站名称/部分/品牌1/0-200

目前我有将信息提交到单独的 php 页面的表单,该页面收集变量并从中创建一个新的 url,然后使用 301 重定向。下面的 php 示例:

$min = $_GET[‘min-price’];
$max = $_GET[‘max-price’];
$brand = $_GET[‘brand’] ;

header ('HTTP/1.1 301 Moved Permanently');
header('Location: http://site-name/section/' . $brand . '/'. $min.'-'.$max );
exit();

如您所见,它收集信息并将您带回页面并声明上一页已永久移动。

问题:

  1. 虽然这可能很原始,但仍然可以使用而不会造成太多麻烦吗?

  2. 谷歌会恨我创建这么多 301 的吗

  3. 刚注意到代码头("Location: /foo.php",TRUE,301);最好使用这个还是没有区别?

【问题讨论】:

    标签: php url-rewriting forms seo


    【解决方案1】:
    1. 是的,我认为您的解决方案没有问题。即使给出了恶意的用户输入,它也只会重定向到一个不存在的页面。

    2. 我不这么认为。您已经使用了正确的代码 301 而不是默认的 302,这可能会造成一些麻烦/确实对 Google、被盗 PR 和 SEO 造成了一些破坏

    3. 使用 header("Location:...", true, 301);是可取的。这样 php 可以根据环境自动做出决策。例如。如果使用 HTTP/1.0 连接,php 可以使用 HTTP/1.0 而不是解决方案中的固定 HTTP/1.1 发送 301 代码。但是,无论哪种方式都可以。

    但是有一个问题:您为什么不直接链接到您的好网址?然后,您正在使用的 mod_rewrite 将负责将 URL 给出的参数分配给您可以像往常一样通过 $_GET 访问的变量。

    【讨论】:

      【解决方案2】:

      您做事的方式是post redirect get (PRG) 模式的排列。在您的情况下,它是 Get redirect get。

      PRG 通常的意思是:

      • 用户将表​​单发布到控制器,控制器可以做任何你想做的事情,并构建所需的 url
      • 脚本 REDIRECT 使用到所需的 url
      • 用户获取 url,查看结果。

      一般来说,这是一个很好的模式,它允许您控制 - 例如- 从结果搜索 url 中删除默认值。

      关于您的具体问题

      1. 如果它有效,那很好
      2. Google 不会提交表单,因此它不会找到经过预处理的 url 来进行 301 重定向,除非这些 url 已经存在于其他地方。但是,您需要链接到“http://site-name/section/brand/min-max”,任何搜索引擎才能知道这些页面的存在。
      3. 两者都可以,不过一行代码更容易输入

      【讨论】:

      • Get/Redirect/Get 模式毫无意义,你知道的。
      • 让 OP 有意义,因为这就是他正在做的事情并要求提供反馈
      • 非常感谢 AD7 提供的信息,有趣的是,当您认为自己做了一些独特的事情时,它已经完成了……将考虑使用 post 方法……感谢您的输入: )
      • 正如 AD7six 下面的方法中所说...我似乎 google 抓取了一些 GET 表单,所以最好将其保留为 GET?
      • 这很有趣。 Google does or did crawl GET forms。 IMO 最好不要依赖谷歌这样做,只提供(站点地图、链接)你希望机器人索引的 url。
      【解决方案3】:

      搜索引擎不提交表单。
      因此,没有任何表单动作必须是友好的。 (而且,作为另一个结果 - 不,谷歌不会恨你)。

      进行额外的重定向而不是显示表单结果是没有意义的。

      【讨论】:

      • 你能澄清一下“做额外的重定向而不是显示表单结果是没有意义的”。方法。您是说将 list.php?brand.. 重定向到 /foo/bar/zum 没有任何价值?
      • 当然。如果有,Google 会自己做。
      • 刚刚抬头,我认为谷歌搜索通过 GET 表单。所以我认为它有可能会起作用,但是我有一种感觉,他们只会搜索收音机、下拉菜单等而不是输入文本表单......仍在尝试寻找更多关于此的信息,但很难找到
      猜你喜欢
      • 2011-01-23
      • 2016-04-13
      • 1970-01-01
      • 2011-04-06
      • 2011-05-09
      • 2018-05-22
      • 2015-01-12
      • 2017-03-09
      • 2011-02-15
      相关资源
      最近更新 更多