编辑RewriteRule以允许URL中的标题

时间:2010-08-17 03:12:03

标签: mod-rewrite

我真的很难理解mod_rewrite,并在创建RewriteRule以获得我们网站的简单网址时获得了一些帮助

RewriteRule ^news/([a-zA-Z0-9_-]+)$ /news/$1/ [R]
RewriteRule ^news/([a-zA-Z0-9_-]+)/$ news/show.php?id=$1

所以有人可以访问site.com/news/700/并且网址看起来与他们相同,但是将请求发送到我们的服务器并使用/news/show.php?=700将文章拉出来。

我想将文章的标题添加到网址中,只是为了让有人看到链接到我们网站时更加用户友好。

site.com/news/700/heres-our-important-title

有人可以让我知道我需要改变什么来实现这一点,以便代码仍能正常工作吗?所以一个url最后可以有额外的文本,但它仍然只会在/ news /后拉出id号。

感谢。

1 个答案:

答案 0 :(得分:1)

您只需要更新第二个RewriteRule以允许(可选)最后的标题。此外,作为一些管家,第一条规则需要修改,原因不相同:

RewriteRule ^news/([a-zA-Z0-9_-]+)$    /news/$1/ [R=301,L]
RewriteRule ^news/([a-zA-Z0-9_-]+)/.*$ news/show.php?id=$1

如果您的ID仅为数字,则将您的角色类[a-zA-Z0-9_-]更改为[0-9]也可能不是一个糟糕的主意,具体取决于您希望如何处理404。