如何通过.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的调整,核心是确保后端能通过标题唯一识别文章:
调整PHP链接生成代码
修改生成链接的PHP代码,直接输出处理后的标题,不再拼接ID:href="https://example.com/news/<?php echo urlencode($title) ?>"注意:建议提前将标题转为URL友好格式,比如替换空格为短横线、转小写、去除特殊字符,避免URL出现无效字符。
修改.htaccess规则
调整Rewrite规则,将URL中的标题参数传递给后端:RewriteEngine on RewriteRule ^news/([^/]+)/?$ news.php?title=$1 [NC,L]这条规则会把
https://example.com/news/sometitle格式的URL,转发到news.php?title=sometitle。后端逻辑适配
在news.php中,需要根据接收的title参数去数据库查询对应的文章,这要求数据库中的标题字段是唯一的,或者你已经对标题做了唯一化处理(比如添加唯一后缀),否则会出现多文章对应同一标题的冲突问题。
你尝试的配置是把ID和标题都放在URL路径里,反而让URL冗余,不符合去掉ID的需求,无需采用。
内容的提问来源于stack exchange,提问作者drvoredi
相关产品推荐
相关产品推荐

