【问题标题】:Mod rewrite catch get query and add another query stringMod重写catch get查询并添加另一个查询字符串
【发布时间】:2020-07-17 18:48:46
【问题描述】:

当用户进入时

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 值。我该怎么做?

【问题讨论】:

  • @anubhava 对不起我的错误。纠正它。它是 lang=zh
  • 好的,下面的答案应该可以工作

标签: regex apache .htaccess mod-rewrite


【解决方案1】:

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

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

【讨论】:

  • 非常感谢。你能解释一下,以便我更好地理解它,为什么我应该使用 QSA,第一行是什么意思?
  • QSA 是查询字符串追加以在现有查询字符串中添加新参数。条件是检查您是否在查询字符串中已经有lang=en
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 2011-03-02
  • 1970-01-01
  • 2012-09-25
相关资源
最近更新 更多