PHP重定向,如果语言参数不在URL中

时间:2013-03-25 14:33:00

标签: php url localization

我有一个网址,例如:http://localhost/project,当用户去那里时,我想重定向到http://localhost/project/en。我该如何做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以通过编程方式或在Web服务器级别使用某些内容(例如,使用Apache的mod_rewrite)。由于您明确提到了PHP,我将为您提供以下内容。

在名为' project'的文件夹中在您的文档根目录下,使用以下内容创建index.php:

<?php
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://localhost/project/en" );
exit(0);
?>

这是一个链接,显示此样式和其他方法(包括mod_rewrite)来处理此问题:

http://www.phatz.com/301redirect.php

答案 1 :(得分:1)

有很多方法。您应该使用虚拟主机并重写uri来正确准备您的URL,但是如果您不想打扰这些并且想要一个“正常工作”的方法,那么请尝试以下方法:

$explode = explode('/',$_SERVER['REQUEST_URI']);
if (count($explode) == 1)){
   header('Location: http://localhost/project/en');
}

评论后修改

试试这个,但要注意我没有测试过,因为我没有我的产品。环境在这里,但它应该工作。如果没有,请评论:)

$explode = explode('/',$_SERVER['REQUEST_URI']);
$endsWithSlash = FALSE;
end($explode);
if (empty($explode[key($explode)])){
   unset($explode[key($explode)]);
   $endsWithSlash = TRUE;
}
if (end($explode) != 'en'){
   $url = 'http://localhost';
   $url .= $_SERVER['REQUEST_URI'];
   if (!$endsWithSlash){ $url .= '/'; }
   $url .= 'en';
   header('Location: '.$url);
}