You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过.htaccess实现URL中不显示ID值?

问题描述
  • 现有PHP链接代码:
    href="https://example.com/news/<?php echo $id,$title ?>"
    
  • 当前.htaccess配置:
    RewriteEngine on
    RewriteRule ^news/(.*)/?$ news.php?post_id=$1&title=$2 [NC,L]
    
  • 当前生成的URL:https://example.com/news/1sometitle
  • 需求:能否通过.htaccess配置生成不含ID值的URL,例如:https://example.com/news/sometitle
  • 尝试的配置:
    RewriteEngine on
    RewriteRule ^news/id/(.*)/title/(.*)/ news.php?post_id=$1&title=$2 [NC,L]
    
解决方案

可以实现,但需要配合PHP代码和.htaccess的调整,核心是确保后端能通过标题唯一识别文章:

  1. 调整PHP链接生成代码
    修改生成链接的PHP代码,直接输出处理后的标题,不再拼接ID:

    href="https://example.com/news/<?php echo urlencode($title) ?>"
    

    注意:建议提前将标题转为URL友好格式,比如替换空格为短横线、转小写、去除特殊字符,避免URL出现无效字符。

  2. 修改.htaccess规则
    调整Rewrite规则,将URL中的标题参数传递给后端:

    RewriteEngine on
    RewriteRule ^news/([^/]+)/?$ news.php?title=$1 [NC,L]
    

    这条规则会把https://example.com/news/sometitle格式的URL,转发到news.php?title=sometitle。

  3. 后端逻辑适配
    在news.php中,需要根据接收的title参数去数据库查询对应的文章,这要求数据库中的标题字段是唯一的,或者你已经对标题做了唯一化处理(比如添加唯一后缀),否则会出现多文章对应同一标题的冲突问题。

你尝试的配置是把ID和标题都放在URL路径里,反而让URL冗余,不符合去掉ID的需求,无需采用。

内容的提问来源于stack exchange,提问作者drvoredi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:47:42