regex - Mod重写catch get查询并添加另一个查询字符串
问题描述
当用户进入
http://www.test.com/inbox.php?msg_op=inbox
我必须抓住 GET,让它像
http://www.test.com/inbox.php?msg_op=inbox&lang=en
我尝试过的是:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !\.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{QUERY_STRING} .
RewriteRule ^inbox.php?(.*) inbox.php?$1&lang=en [NC,L]
但它不起作用。我只在 $_GET 中获得 LANG 值。我怎样才能做到这一点?
解决方案
您可以将此简化规则与否定条件和QSA
标志一起使用:
RewriteCond %{QUERY_STRING} !(?:^|&)lang=en(?:&|$) [NC]
RewriteRule ^inbox\.php$ $0?lang=en [NC,L,QSA]
推荐阅读
- xml - 在 XSLT 中将 XML 转换为 XML
- python - 如何添加到 CSV 文件列表中的特定项目
- mysql - 一个桶的数据不存在时,如何选择桶中的SQL数据?
- javascript - 遍历有效 JSON 时无法将 undefined 或 null 转换为对象
- email - Flutter - 如何实现一个电子邮件 TextFormField 小部件以在多个屏幕中使用?
- sql - Oracle SQL - 基于分组和条件运行求和
- javascript - 在javascript画布上的椭圆内剪切线
- php - 我怎么不能使用 Doctrine + convert_tz()
- catel - 调试时如何单步执行 Catel 代码
- swift - 如何遍历具有地图数组的 Firestore 文档?