使用 apache htaccess 进行漂亮的 URL mod-rewrite,只有 1 个例外

使用 apache htaccess 进行漂亮的 URL mod-rewrite,只有 1 个例外

大家好,我尝试解决这个问题,但没有成功。
想重写并美化这个特定的...?ln=zh-CN 到 /cn/... 在天才 @ StackOverflow(Laurence Gonsalves) 的帮助下,我快完成了!但卡在这里:

/它/一些页面进展顺利/somepage?ln=it
/de/somepage进展顺利/somepage?ln=de
/fr/somepage进展顺利/somepage?ln=fr
/cn/somepage 但这会导致 404 错误!
/somepage?ln=zh-CN 当然可以

# exception for Chinese version /cn/somepage
RewriteRule ^zh-CN/(.*) /$2?ln=zh-CN [L]
RewriteRule ^cn/(.*) /$2?ln=zh-CN [L]

# redirect all /XX/somepage goes to /somepage?ln=XX
RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L]

第二部分完美!第一部分效果不佳,唯一的例外是 zh-CN...这里忽略了什么?我确信,所有线索或提示都会在我们的来世得到女性的关注!

答案1

如果我没看错的话,将$2前两个规则替换为$1

解释:匹配中只有一组括号,因此反向引用$2未定义(并且将扩展为空字符串,因此出现 404),而$1将包含匹配的文本(.*)

相关内容