【问题标题】:How can I remove ID variable from URL with htaccess?如何使用 htaccess 从 URL 中删除 ID 变量?
【发布时间】:2011-03-23 22:34:11
【问题描述】:

对于复杂的问题,我很抱歉。我有一个网站,可以从 MySQL 数据库中读取内容以获取视频信息,就像 YouTube 一样。

我有 7 列:id、title、desc、url、date、whosadded、views。

我想做的是将网址从/video.php?id=X重写为/title-music-video.html

有 (http://www.devarticles.com/c/a/Apache/Using-ForceType-For-Nicer-Page-URLs/1/) 的文章,但 htaccess 的 ForceType 不适合我。

我知道有一种方法可以为优化链接在表中添加新列,但我不想在使用表单添加新记录时指定每个 seo url。

我被困在这一点上。

【问题讨论】:

  • 为什么 ForceType 会起作用?无论如何,你所说的“改变”是什么意思?重定向?
  • 我不知道为什么它不工作它总是说 404。我的意思是改变是重写 url
  • 您是否有当前的 .htaccess 代码要发布,以便我们尝试找出您哪里出错了?
  • 所以您希望对http://domain.com/artist-song-music-video.html 的请求在内部重写为http://domain.com/video.php?id=1?为什么?为什么不直接从http://domain.com/artist-song-music-video.html 提供页面并且没有内部或外部重定向?
  • @Artefacto:因为这不是他的应用程序的工作方式。数据不是作为平面文件存储的,它很可能是在数据库中。

标签: php apache .htaccess seo


【解决方案1】:

您是否阅读了整篇文章? ForceType 不会为您神奇地转换 URL...它只是强制文件作为某种类型提供服务——因此您的 .HTML URL 可以解释为 PHP。

您的视频是否存储在数据库中?你用身份证把他们拉起来?在这种情况下,您可以在表中添加一个额外的列,通常称为“slug”,并在其中存储“artist-song-music-video”的值——该列必须是唯一的。如果您认为您可能有两个具有相同名称的页面,请在 URL 中同时使用 ID 和 slug(就像这个网站是如何做到的——例如 videos/5/artist-song-music-video)。

然后,您实际上要做的是将 url 重写——/artist-song-music-video.html/video.php?page=artist-song-music-video 或类似的东西。然后在您的 index.php 中,您通常有一个“路由器”,它接收 $_GET['page'],在数据库中查找该 slug,并显示正确的内容。

我不记得确切的 mod_rewrite 规则来翻译这样的 URL,但是网上有几十个教程。谷歌一下。


我突然想到artistsong 可能是变量。在这种情况下,将“slug”替换为您可能存在的两个列“艺术家”和“歌曲”并以这种方式查找。只需删除“-music-video.html”部分即可。我真的不知道你的计划是什么,所以我不能多说。

【讨论】:

  • “我知道有一种方法可以为优化链接在表中添加新列,但我不想在使用表单添加新记录时指定每个 seo url”——但他们这样做 提交标题?如果是这样,只需将标题转换为 slug;无论如何,这就是你应该这样做的方式。他们不需要输入任何内容。只需转换为小写并替换空格希望破折号。
猜你喜欢
  • 1970-01-01
  • 2012-08-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
相关资源
最近更新 更多