重写.htaccess文件中的规则

时间:2013-05-27 06:16:05

标签: mod-rewrite rewrite

请求很简单,但我找不到实现它的方法。我有类似的链接:

httр://mysite.com/index.php?lang=EN
httр://mysite.com/index.php?route=add&lang=EN
httр://mysite.com/index.php?route=view&lang=EN

等等。我想要的是创建301重定向,以便EN可以更改为GB。例如,如果客户打开httр://mysite.com/index.php?route=add&lang=EN,则应将其重定向到httр://mysite.com/index.php?route=add&lang=GB

我已经搜索了好几天,但未能找到合适的解决方案。请帮忙。

1 个答案:

答案 0 :(得分:0)

是否必须在.htaccess中完成?这是在PHP中执行此操作的一种相对简单的方法:

<?
if ("EN" == $_GET['lang']) {
  $params = $_GET;
  $params['lang'] = "GB";
  $query_strings = array();
  foreach ($params as $key => $value) {
    $query_strings[] = $key . "=" . $value;
  }
  header("HTTP/1.1 301 Moved Permanently"); 
  header("Location: http://www.mysite.com?" . join($query_strings, "&");
}

最重要的是,在您可以隔离每个查询参数并仅查看lang参数并确定是否执行重定向的级别上更容易解决此问题。

使用正则表达式(因为您需要在.htaccess中使用),仅隔离lang部分更难。每个语言还需要一行来重定向和维护列表。