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

如何在PHP中实现用户友好URL?XAMPP环境404问题求助

问题解决指南

核心问题分析

你的.htaccess规则存在两处关键错误,加上XAMPP的基础配置可能未到位,导致404错误:

  • 正则(\d+)仅匹配数字,但你的文章slug是字符串(如test-example),规则无法匹配目标URL
  • 重写目标指向/news/?article_slug=$1,但实际处理请求的是index.php,路径指向错误

1. 修正.htaccess规则

替换现有规则为以下内容:

RewriteEngine On

# 跳过已重定向的请求,避免循环
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

# 将友好URL重写为实际处理的index.php
RewriteRule ^news/([\w-]+)$ /news/index.php?article_slug=$1 [L]

# 将旧的带query string的URL重定向到友好URL(可选,用于SEO和旧链接兼容)
RewriteCond %{QUERY_STRING} ^article_slug=([\w-]+)$
RewriteRule ^news/index\.php$ /news/%1 [R=301,L]

规则说明:

  • ([\w-]+):匹配包含字母、数字、下划线和连字符的slug,完美适配test-example这类格式
  • 重写目标明确指向/news/index.php,确保请求能被PHP脚本正确接收处理
  • 外部重定向使用301永久重定向,兼顾SEO和旧链接跳转需求

2. 配置XAMPP环境确保规则生效

.htaccess需要Apache满足两个配置要求:

  • 开启mod_rewrite模块:
    打开XAMPP的Apache配置文件(httpd.conf),找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉行首的#注释,保存后重启Apache。
  • 设置AllowOverride为All:
    在httpd.conf中找到对应news目录(或全局网站根目录)的<Directory>块,将AllowOverride None修改为AllowOverride All,保存后重启Apache。

3. 验证效果

重启Apache后:

  • 访问http://localhost/news/test-example,应正常加载对应文章
  • 访问旧URLhttp://localhost/news/index.php?article_slug=test-example,应自动跳转到友好URL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:20:42