将URL重写为URL中未包含的内容

时间:2013-06-27 23:38:27

标签: php mod-rewrite

据我所知,你可以使用mod重写来使网页看起来更好......

例如:

www.myblog.com/articles/read.php?article_ID=1234

为:

www.myblog.com/read/1234

使用:

RewriteRule ^([^_]*)/([^_]*)$ /articles/$1.php?article_ID=$2

现在如何向URL添加内容,而这些内容原本不属于它?

例如,如果我希望网址是文章(标题)的描述而不是数字?

我怎样才能做到这一点:

http://www.myblog.com/read/This_is_the_heading_of_a_very_interesting_article

为了检索标题,我必须使用文章ID连接到我的数据库... mod_rewrite是否有办法调用php脚本?

并且(如果可能的话)当2篇博客文章具有相同的标题时会发生什么?

后者可能是为什么这不起作用的原因 - 但是我觉得我已经多次见过它了......

我想修复可能仍然是将唯一标识符添加到网址中以避免混淆,如:

http://www.myblog.com/read/1234/This_is_the_heading_of_a_very_interesting_article

只是想知道如何实现这一点,任何建议都值得赞赏! : - )

2 个答案:

答案 0 :(得分:1)

您必须使用PHP来创建链接。当页面加载时,您可能已经从数据库中提取了文章信息,包括ID,标题,文本等。构建链接时,您将使用数据库中的信息创建包含带标题的URL的页面。然而,重要的是身份证。这就是你如何跟踪,以便重复的标题无关紧要。

我可以使用此链接Rewrite URL to something that's not contained in the URL更改帖子的标题,但是当您转到该标题时,服务器会忽略该标题。

查看此链接,因为它可能对您有所帮助

How to rewrite SEO friendly url's like stackoverflow

答案 1 :(得分:0)

对于这样的事情,我倾向于使用斜杠作为分隔符,因为这往往是人们的事情 - 这意味着你可以拥有“my_title_either / or”的标题,但这通常没问题。

RewriteRule ^([^/]*)/([^/]*)$ /articles/$1.php?article_header=$2

您自己有责任使文章标题唯一。您的第二个版本具有唯一ID,

RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /articles/$1.php?article_id=$2

我根本没用过3美元;如果您有唯一的ID,则不需要任何其他内容,但如果您愿意,仍然可以使用它:

RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /articles/$1.php?article_id=$2&title=$3