0

基本上我要做的是更改浏览器地址栏中显示的 url。因此,如果用户键入example.com/lang/en,我希望地址栏只显示example.com ,从显示的内容中删除/lang/en部分。

我已经尝试了一些 rewriteRules 但它没有用。谁能帮我吗?谢谢。

4

3 回答 3

2

你不能variable保存mod_rewrite

如果您更改example.com/lang/enexample.com您将无法访问lang/en任何更多并更改语言

最好的方法是使用$_SESSIONheader("location..")

一个例子example.com/?lang=en

session_start()

if(isset($_GET['lang']))
{
   $_SESSION['lang'] = $_GET['lang'];
   header("location: example.com");
   exit;
}
if(!isset($_SESSION['lang']))
   $_SESSION['lang'] = "en" //default language
于 2013-05-03T21:02:35.233 回答
0

编辑:我错过了你的要求。请试试这个。

<?php
  $uri = explode('/',$_SERVER['REQUEST_URI']);
  if ($lang_key = array_search('lang',$uri)) {
    $lang = $uri[$lang_key+1];
    unset($uri[$lang_key],$uri[$lang_key+1]);
    $_SESSION['lang'] = $lang;
    header('location: http://example.com/'.implode('/',$uri));
  }
于 2013-05-03T21:00:32.113 回答
0

在对以下内容进行显式请求时重定向浏览器/lang/en

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /en/lang
RewriteRule ^en/lang/(.*)$ /$1 [L,R=301]

在内部将/请求重写为/land/en

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/en/lang%{REQUEST_URI} -f
RewriteRule ^(.*)$ /en/lang/$1 [L]
于 2013-05-03T22:30:39.350 回答