如何通过.htaccess与PHP实现SEO友好URL重写
实现SEO友好URL的.htaccess配置
首先确保你的Apache服务器已经开启mod_rewrite扩展,且站点配置中已经开启了根目录.htaccess文件的读取权限。
完整.htaccess配置代码
RewriteEngine On RewriteBase / # 跳过真实存在的文件、目录,不执行重写 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 匹配 /数字/字符串 格式的友好URL,转发到原动态地址 RewriteRule ^([0-9]+)/([a-zA-Z0-9_-]+)/?$ instructions.php?topic_id=$1&t=$2 [L,QSA]
配置说明
- 规则中
$1对应友好URL第一个路径位的数字,也就是原URL的topic_id参数值 - 规则中
$2对应友好URL第二个路径位的内容,也就是原URL的t参数值,已兼容a-b-c这类带横杠的格式 - 标记
[L]代表匹配到本条规则后不再执行后续重写规则,[QSA]代表保留原URL附带的其他查询参数,如果你不需要保留额外参数可以去掉该标记 - 你提到的
category=NNNX参数没有出现在重写后的URL里,如果你需要该参数也体现在友好URL中,可以调整匹配规则,比如改成^([0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9_-]+)/?$,对应转发地址改为instructions.php?topic_id=$1&category=$2&t=$3即可
PHP侧适配说明
重写生效后你可以在instructions.php中直接通过$_GET['topic_id']、$_GET['t']正常获取参数,和原有动态URL的参数获取逻辑完全一致,不需要做额外调整。
内容的提问来源于stack exchange,提问作者bin2003
相关产品推荐
相关产品推荐

