解析SEO友好的URL。如何?

时间:2014-08-13 21:35:24

标签: php apache

我正在努力建立一个“标准”网站,其中文章的路径有SEO友好的URL这样的东西:

www.test.com/library/book-34/chatper-4/page-10/

该网站使用PHP和mySQL构建。在此示例中,我们从电子书的给定章节访问页面的内容。至于可以在网上轻易找到的原因,我想使用这个表格而不是:

www.test.com/library.php?book=34&chap=4&page=10

我在网上进行了一些研究,发现此链接例如:SEO friendly url using php

我喜欢在本文中建议使用FallbackResource的想法,然而我尝试了,虽然我完全不了解机制,但我得出的结论是,只有在我们想要在URL中访问的文件时它才有效不在文件系统上。因此,如果您输入www.test.com/test/toto并且文件toto不存在,那么yow将被重定向到FallbackResource指向的任何内容。 这种方法的问题在于它似乎不适用于以下路径:

www.test.com/folder/folder-1/folder-2

因为它似乎被认为是一系列子目录而不是丢失的文件。因此,当使用FallbackResource时,我得到一个错误500(我无法解释这是否是正确的原因,但这是我自己能够提出的唯一一个。我在Stackoverflow上问过但没有答案所以远:FallbackResource works for some pages but not others)。

我需要的是“分解”URL,以便我可以查看数据库中的正确信息。例如,找到书34的id,并在数据库中找到属于第34章第4章的第10页。我知道如何做到这一点。我也可以建立URL。

我不知道的是,实际重定向任何网址(如www.test.com/f-1/AA/B-2/tmp/C04/或其他任何网址)的最佳方法是什么然后,我可以使用url路径从数据库中提取数据并将其显示在页面上?

似乎使用机制来捕获丢失的页面(404)并不是一个好方法。我也知道使用RewriteRule的可能性,但似乎FallbackResource被认为是更好的选择。但是我不能让它以通用的方式工作(也许有人可以告诉我怎么做,或者我做错了什么?)。

CMS一直在使用SEO友好的URL,因此必须有一种“标准”的方式来实现这一点,并且在所有情况下都有效(不像FallbackResource似乎有限)。

这是我项目中唯一没有工作的部分,因此我在接近结果时陷入困境。这非常令人沮丧。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我不认为谷歌会非常关心你过去的.com /但你的用户会这么做。他们更容易理解和看起来更好,所以我觉得值得做。

Apache ModRewrite是可行的方法。

答案 1 :(得分:0)

我认为,如果您阅读本文http://symfony.com/doc/current/book/http_fundamentals.html,特别是“请求与回复之间的旅程”部分>前控制器"你可能会抓住如何实现它的想法。

简单地说,您将所有服务器请求发送到index.php文件,该文件将解析请求并将其发送给适当的文件。您需要为您的apache服务器配置一个.htaccess(您需要从活动的apache重定向模块),它将重定向所有流量。

对于存在或不存在的网页,您不会遇到任何问题,因为您不会直接通过前端控制器直接点击它们。