【发布时间】:2020-11-06 11:10:45
【问题描述】:
我的 .htaccess 中有这个:
RewriteRule ^en/?(.*)$ $1?lang=en [QSA]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ page.php?route=$1 [NC,L,QSA]
任务是获取语言参数。如果是https://example.com/,那么语言将是默认的(hu),但如果是https://example.com/en/,那么显然是en。这部分工作正常。 但是,在 page.php 上,如果 url 具有 en/(或 de/、fr/ 等)前缀,则路由变量会重复,例如:
//https://example.com/en/air-conditioners
$_GET['route'] = 'air-conditioners/air-conditioners'; //❌
$_GET['lang'] = 'en'; //✔
//https://example.com/en/air-conditioners/
$_GET['route'] = 'air-conditioners//air-conditioners/'; //❌
$_GET['lang'] = 'en'; //✔
我不是最伟大的正则表达式专家,因此非常感谢您的帮助,谢谢。
【问题讨论】:
标签: php regex apache .htaccess