首页 > 解决方案 > 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 值。我怎样才能做到这一点?

标签: regexapache.htaccessmod-rewrite

解决方案


您可以将此简化规则与否定条件和QSA标志一起使用:

RewriteCond %{QUERY_STRING} !(?:^|&)lang=en(?:&|$) [NC]
RewriteRule ^inbox\.php$ $0?lang=en [NC,L,QSA]

推荐阅读