2013-05-03 82 views

回答

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)); 
    } 
2

你不能mod_rewrite

节省variable如果你改变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 
+0

嗯ok了。有道理。那么我将使用mod_rewrite从显示中删除查询呢? – 2013-05-03 21:19:51

+0

运行一个页面后,你不能使用mod_rewrite,你应该使用header(“location ..”)来改变你的位置 – Cooper 2013-05-04 10:14:07

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] 
相关问题