【问题标题】:Edit RewriteRule to allow title in URL's编辑 RewriteRule 以允许 URL 中的标题
【发布时间】:2010-08-17 13:00:47
【问题描述】:

我在理解 mod_rewrite 时确实遇到了麻烦,并且在创建 RewriteRule 以为我们的网站提供简单的 url 方面得到了一些帮助

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

所以有人可以访问 site.com/news/700/ 并且 url 在他们看来是一样的,但是将请求发送到我们的服务器 /news/show.php?=700 以提取文章。

我想在 URL 中包含文章的标题,只是为了在有人看到我们网站的链接时使其更加用户友好。

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

有人可以告诉我我需要进行哪些更改才能实现这一点,以便代码仍能正常工作吗?所以一个 url 可以在末尾有额外的文本,但它仍然只会在 /news/ 之后提取 id 号。

谢谢。

【问题讨论】:

    标签: mod-rewrite


    【解决方案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 的方式。

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 1970-01-01
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多