2012-03-07 170 views
1

我期待在HTML表单中提交过滤器后创建一个SEO友好的URL。搜索引擎优化友好的HTML/PHP表单提交

在玩了一段时间之后,我找到了一种方法,但是我想知道人们怎么看待它,因为我是新开发的。

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

原始地址:? 网站娜/ list.php的品牌= brand1 &分钟价格= 0 &最高价格= 2000

重写后的URL: 站点名称/节/ brand1下面的例子/ 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. Google是否会恨我创造这么多的301的

  3. 只注意到代码标题(“位置:/foo.php",TRUE,301);最好是使用这个还是没有区别?

回答

2
  1. 是的,我看到您的解决方案没有问题。即使有恶意用户输入,也只是重定向到不存在的页面。

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

  3. 使用标题(“位置:...”,真,301 );是可取的。这样php可以自动根据环境做出决定。例如。如果使用HTTP/1.0连接,php可以使用HTTP/1.0发送301代码,而不是在解决方案中使用固定的HTTP/1.1。但是,无论哪种方式都很好。

但有一个问题:为什么不直接链接到你的漂亮的URL?然后你正在使用的mod_rewrite已经负责将给定的参数和URL一起分配给你可以像往常一样通过$ _GET访问的变量。

-3

搜索引擎不提交表单。
因此,没有任何形式动作必须友善。 (另一个结果 - 不,谷歌不会恨你)。

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

+0

你能否澄清“没有做额外的重定向,而不是显示表单结果只是没有任何意义。”手段。你是否认为将list.php?品牌重定向到/ foo/bar/zum没有价值? – AD7six 2012-03-07 12:17:29

+0

当然。如果有的话,谷歌会自己做。 – 2012-03-07 12:33:33

+0

感谢您澄清您的回复 - 您错了:) – AD7six 2012-03-07 12:37:19

0

你做事情的方式是post redirect get(PRG)模式的变换。在你的情况下,它是获取重定向获取。

什么PRG通常的意思是:

  • 用户张贴形式向控制器,它确实任何你想要的,并建立所需的URL
  • 脚本重定向使用所需的URL
  • 用户获取网址,看到结果。

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

关于你提到的具体问题

  1. 如果它的工作原理,它的罚款
  2. 谷歌将不会提交的形式,这样就不会被发现的预处理网址获得301重定向,除非这些网址已经存在于其他地方。但是,您需要链接到任何搜索引擎的“http:// site-name/section/brand/min-max”才能知道页面存在。
  3. 要么是好的,一行代码是更容易一些,虽然
+0

获取/重定向/获取模式只是没有意义,你知道。 – 2012-03-07 12:06:47

+0

有道理,因为这就是他正在做的事情,并要求对 – AD7six 2012-03-07 12:13:37

+0

的反馈非常感谢那些信息AD7,它很有趣,当你认为你做了一些独特的事情时,它已经在......之前已经完成了。方法...感谢您的输入:) – 2012-03-07 16:19:00