PHP与.htaccess实现英西双语友好URL问题排查
问题原因及修正方案
问题根源
你当前的.htaccess规则里,正则表达式([a-zA-Z0-9-]+)只能匹配不含斜杠的单一字符串段,但实际的slug是包含多个斜杠的多层路径(比如general/news/europe/2022/10/22/this-is-a-nice-title),所以规则根本无法匹配到真实的请求URL,自然不会转发到read-article.php或leer-noticia.php处理,导致拿不到MySQL查询结果。
修正后的.htaccess规则
替换原规则为以下内容:
RewriteEngine On # 匹配英文站点的多层slug路径 RewriteRule ^(en)/(.+)$ $1/read-article.php?id=$2 [L,QSA] # 匹配西语站点的多层slug路径 RewriteRule ^(es)/(.+)$ $1/leer-noticia.php?id=$2 [L,QSA]
关键说明
(.+):匹配en/或es/之后的所有内容(包括斜杠),完整捕获整个slug路径。QSA标记:保留原URL中的查询参数(如果有的话),避免丢失额外参数。- 确保
read-article.php和leer-noticia.php确实存在于en/和es/子目录下,且PHP文件里正确接收$_GET['id']参数去查询MySQL。
内容的提问来源于stack exchange,提问作者Kamikaza
相关产品推荐
相关产品推荐

